【发布时间】:2012-02-21 18:59:24
【问题描述】:
当我运行cap deploy 时,:assets 组中的 gem 没有安装。
这是一个问题,因为我使用的是预编译资产,而 Capistrano 必须在服务器上运行 rake assets:precompile。除非安装了资产 gem,否则这将失败。
我可以通过在正确的发布目录中手动运行bundle install 来解决这个问题。但显然这不是正确的工作流程。
这是 Capistrano 为在每次部署中安装 gems 所执行的完整命令:
rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'default' -c 'cd
/home/deploy/rails_apps/vlc/releases/20120223192328 && bundle install --gemfile
/home/deploy/rails_apps/vlc/releases/20120223192328/Gemfile --path
/home/deploy/rails_apps/vlc/shared/bundle --deployment --quiet --without development test'
到此结束,我认为这可能是问题的一部分:
--deployment --quiet --without development test'
显然,这些标志会导致 Bundler 在没有 :assets 组的情况下安装。这里的预期行为是什么?是不是我看到的不正常? (我猜是这样,因为 Capistrano 故意不安装即将使用的 gem 组是没有意义的。)
作为旁注,我还注意到application.rb 中的这一行:
Bundler.require(*Rails.groups(:assets => %w(development test)))
我假设 application.rb 中的任何内容都不会影响 bundle install,因为 Rails 不会为此启动。但是,如果这条线实际上与我的问题有关,请纠正我。
【问题讨论】:
-
你的
Gemfile是什么样的?
标签: ruby-on-rails rvm capistrano bundler