如果这是一个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
在我们的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
)时,它仍会从开发/测试组中安装宝石......
为什么会发生这种情况或如何使其正常工作?
答案 0 :(得分:161)
查看--without
选项:
bundle install --without development test
默认情况下,Bundler会安装所有宝石,您的应用程序会使用它所需的宝石。 Bundler本身对Rails和当前环境一无所知。
答案 1 :(得分:1)
另一种解决方案是使用bundle-only
ruby gem。它可以使用如下:
bquote
此库不会污染您的Bundler配置或增加> gem install bundle-only
> bundle-only production
;它是bundler
提供的内置Gemfile.lock
选项的简单替代方法。