在Capistrano中捆绑安装而不是在Rails中安装资产gems

时间:2012-02-21 18:59:24

标签: ruby-on-rails rvm capistrano bundler

当我运行cap deploy时,:assets组中的宝石未安装。

这是一个问题,因为我正在使用预编译资产,而Capistrano必须在服务器上运行rake assets:precompile。除非安装了资产宝石,否则这将失败。

我可以通过在正确的版本目录中手动运行bundle install来解决此问题。但显然这不是正确的工作流程。

这是Capistrano执行的完整命令,用于在每次部署中安装gem:

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故意避免安装它即将使用的宝石组是没有意义的。)

作为旁注,我还在application.rb中注意到这一行:

Bundler.require(*Rails.groups(:assets => %w(development test)))

我假设application.rb中的任何内容都不会影响bundle install,因为Rails不会为此启动。但如果这条线与我的问题有关,请纠正我。

1 个答案:

答案 0 :(得分:1)

记住

--without选项,在项目目录/服务器上检查文件.bundle/config它可能已经包含这样的内容:

---
BUNDLE_WITHOUT: assets