Rails bundle install production only

gingerlime picture gingerlime · Jun 6, 2012 · Viewed 56.1k times · Source

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?

Answer

Simon Perepelitsa picture Simon Perepelitsa · Jun 6, 2012

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.