钢轨捆绑安装生产只

道歉,如果这是一个RTFMtypes的问题,但我还是新的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 

在我们的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 

但是,当我运行RAILS_ENV=production bundle install (或bundle install --deployment ),它仍然从开发/testing组安装gem…

为什么会发生这种情况,或者我该如何正确使用这项工作?

看看 – 没有选项:

bundle install --without development test

默认情况下Bundler安装所有的gem,你的应用程序使用它需要的gem。 Bundler本身对Rails和当前环境一无所知。

另一种解决scheme是使用bundle-onlyrubygem 。 它可以使用如下:

 > gem install bundle-only > bundle-only production 

这个库不会污染你的bundlerconfiguration或增加Gemfile.lock ; 这是一个简单的替代内置bundle --without every other group没有bundler提供的bundle --without every other group选项。