现在公司的新项目开始在 rails 5 上开发了,由于公司是前后端完全独立,所以只用 rails api 就可以了
正常开发之后,遇到了一点小问题:
我们公司使用的部署工具是 capistrano, 我们使用了 capistrano-rails 进行部署,
但是 deploy 的时候,发现报错了
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@XXXXXXX: rake exit status: 1
rake stdout: Nothing written
rake stderr: rake aborted!
Don't know how to build task 'assets:precompile' (see --tasks)
/var/www/services/money_api/shared/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
/home/deploy/.rvm/gems/ruby-2.3.0/gems/bundler-1.12.5/lib/bundler/cli/exec.rb:63:in `load'
/home/deploy/.rvm/gems/ruby-2.3.0/gems/bundler-1.12.5/lib/bundler/cli/exec.rb:63:in `kernel_load'
/home/deploy/.rvm/gems/ruby-2.3.0/gems/bundler-1.12.5/lib/bundler/cli/exec.rb:24:in `run'
......
(See full trace by running task with --trace)
由于 rails api 没有 assets 的说法,自然运行编译 assets 是失败了,
本来自己写个假的 assets:precompile
task,
后来看了下 capistrano-rails 的代码,可以把 assets_roles 设置为空,即 set :assets_roles, []
,这样 deploy 就不会调用 assets:precompile 了。