92

私はまだrails/ruby / bandlerに不慣れで、少し混乱しています。

私たちの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)すると、開発/テストグループからのgemがインストールされます...

なぜこれが発生するのですか、またはこれを適切に機能させるにはどうすればよいですか?

4

2 に答える 2

191

--withoutオプションを見てください:

bundle install --without development test

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

于 2012-06-06T10:46:00.313 に答える
3

bundle-only別の解決策は、 rubygemを使用することです。次のように使用できます。

> gem install bundle-only
> bundle-only production

このライブラリは、バンドラーの構成や拡張を汚染しませんGemfile.lock。これは、提供する組み込みbundle --without every other groupオプションの単純な代替手段bundlerです。

于 2017-06-14T09:57:08.683 に答える