web-dev-qa-db-fra.com

rails bundle install uniquement en production

Toutes mes excuses s’il s’agit d’une question de type RTFM, mais je ne connais pas encore Rails/Ruby/bundler et je suis un peu confus.

Dans notre config/application.rb fichier il y a ce segment de bundler:

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

et dans notre Gemfile, nous utilisons différents groupes, par exemple.

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

Mais quand je cours Rails_ENV=production bundle install (ou bundle install --deployment), il installe toujours des pierres précieuses du groupe de développement/test ...

Pourquoi cela se produit-il ou comment puis-je faire en sorte que cela fonctionne correctement?

78
gingerlime

Jeter un coup d'œil à --without option:

bundle install --without development test

Par défaut, Bundler installe toutes les gemmes et votre application utilise les gemmes dont elle a besoin. Bundler lui-même ne sait rien de Rails et de l'environnement actuel.

163

Une autre solution consiste à utiliser le bundle-only Ruby gem . Il peut être utilisé comme suit:

> gem install bundle-only
> bundle-only production

Cette bibliothèque ne pollue pas les configurations de votre bundler ni n'augmente Gemfile.lock; c'est une alternative simple au construit en bundle --without every other group option que bundler fournit.

1
Tom Lord