web-dev-qa-db-ja.com

railsバンドルインストール本番のみ

これがRTFMタイプの質問である場合はおologiesび申し上げますが、私はまだRails/Ruby/bundlerの初心者であり、少し混乱しています。

私たちの中で config/application.rb fileこのバンドラーセグメントがあります:

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)、それでも開発/テストグループからgemをインストールします...

なぜこれが起こるのか、どうすればこれを適切に機能させることができますか?

78
gingerlime

を見てみましょう --withoutオプション:

bundle install --without development test

デフォルトでは、Bundlerはすべてのgemをインストールし、アプリケーションは必要なgemを使用します。 Bundler自体は、Railsおよび現在の環境について何も知りません。

163

別の解決策は bundle-only Ruby gem 。次のように使用できます。

> gem install bundle-only
> bundle-only production

このライブラリは、バンドラーの構成を汚染したり、Gemfile.lock;これは、ビルトインbundle --without every other groupオプション bundler が提供します。

1
Tom Lord