rails bundle仅安装生产

gin*_*ime 83 bundler ruby-on-rails-3

抱歉,如果这是一个RTFM类型的问题,但我仍然是rails/ruby​​/bundler的新手,我有点困惑.

在我们的config/application.rb文件中有这个捆绑器段:

if defined?(Bundler)         
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end
Run Code Online (Sandbox Code Playgroud)

在我们中Gemfile我们使用不同的群体,例如

group :development, :test do
  gem "rspec-rails", ">= 2.7.0", :group => [:development, :test]
  gem 'shoulda-matchers'
  gem 'watchr'
  gem 'spork', '~> 1.0rc'
  gem 'spectator'                          
  gem 'debugger'
  gem 'wirble'
end
Run Code Online (Sandbox Code Playgroud)

但是当我运行RAILS_ENV=production bundle install(或bundle install --deployment)时,它仍然会从开发/测试组中安装宝石......

为什么会发生这种情况或如何使其正常工作?

Sim*_*tsa 169

看看--without选项:

bundle install --without development test

默认情况下,Bundler会安装所有宝石,您的应用程序会使用它所需的宝石.Bundler本身对Rails和当前环境一无所知.

  • 我知道`--without`,但它似乎非常优雅,特别是考虑到`config/application.rb`中的那些配置指令(它们应该正好解决这个问题)并且还考虑了这个引用:[Rails 3自带用bundler支持烘焙.](http://gembundler.com/rails3.html) (2认同)
  • Bundle install命令完全独立于Rails.它只是查看你的Gemfile,它并不关心你的应用程序在上述配置中实际需要的库.实际上,您可以从任何组中手动跳过Bundler.require并要求libs.我同意,Rails可以在这种情况下与Bundler更好地集成,但事实并非如此. (2认同)
  • 我知道了.所以我想可以说rails知道bundler(即在`config/application.rb`和`config/boot.rb`中),但是bundler对rails没有任何了解......它只读取Gemfile并且不使用任何这些rails文件.我觉得硬币终于掉了下来.谢谢你的帮助! (2认同)