Rails bundle install production only
Ruby on-Rails-3BundlerRuby on-Rails-3 Problem Overview
I'm still new to rails/ruby/bundler and am a little confused.
In our config/application.rb
file there's this bundler segment:
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
and in our Gemfile
we use different groups, e.g.
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
But when I run RAILS_ENV=production bundle install
(or bundle install --deployment
), it still installs gems from the development/test group...
Why does this happens or how can I make this work properly?
Ruby on-Rails-3 Solutions
Solution 1 - Ruby on-Rails-3
Take a look at --without
option:
bundle install --without development test
By default Bundler installs all gems and your application uses the gems that it needs. Bundler itself knows nothing about Rails and the current environment.
Solution 2 - Ruby on-Rails-3
An alternative solution is to use the bundle-only
ruby gem. It can be used as follows:
> gem install bundle-only
> bundle-only production
This library does not pollute your bundler configs or augment Gemfile.lock
; it is a simple alternative to the built in bundle --without every other group
option that bundler
provides.