バンドラーは、生産中に「開発」と「テスト」グループの宝石を誤ってインストールしようとしています

StackOverflow https://stackoverflow.com/questions/4438601

質問

たくさんの宝石を使用する小さなWebアプリがあります。それらのいくつかは使用されるだけです testdevelopment 環境。さて、次のコマンドを使用して生産サーバーでUnicornを起動しようとすると、失敗します。

unicorn_rails -E production -D -c config/unicorn.rb

ログファイルに表示されるエラーは次のとおりです。

Refreshing Gem list
Could not find gem 'spork (>= 0.9.0.rc2, runtime)' in any of the gem sources listed in your Gemfile.
Try running `bundle install`.

私は私のgemfileを下に貼り付けました:

source 'http://rubygems.org'

gem 'rails', '3.0.1'
gem 'unicorn'
gem 'mongoid', '>= 2.0.0.beta.19'
gem 'devise'
gem 'cancan'
gem 'haml', '>= 3.0.0'
gem 'bson'
gem 'bson_ext'
gem 'formtastic'
gem 'bluecloth'

group :production do
  gem 'capistrano'
end

group :development do
  gem 'haml-rails'
  gem 'hpricot', '0.8.2'
  gem 'ruby_parser', '2.0.5'
  gem 'less'
  gem 'rspec-rails', '>= 2.0.1'
end

group :development,:test do
  gem 'spork', '>=0.9.0.rc2'
  gem 'mongoid-rspec'
end

group :test do
  gem 'factory_girl_rails'
  gem 'autotest'
  gem 'cucumber-rails'
  gem 'cucumber'
  gem 'capybara'
  gem 'shoulda'
  gem 'database_cleaner'
  gem 'test_notifier'
  gem 'rspec', '2.0.1'
  gem 'launchy' 
end

バンドラーは、適切な環境を検出し、他の宝石を無視することになっていますよね?現在、私はこれを機能させるためにサーバー上のデフォルトグループにないすべての行を削除していますが、それはugいハッキングです。

役に立ちましたか?

解決

たくさんの掘り出しの後、私はこの問題の修正を見つけました。私がしなければならなかったのは走ることだけでした bundle install --without development test サーバーを起動する前。これはaを追加します .bundle/config ラインでRailsルートにファイル BUNDLE_WITHOUT: test:development 。今、あなたが走るときはいつでも bundle install またはサーバーを起動すると、それらのグループが無視されます。

ドキュメントから

Bundler CLIを使用すると、GEMSバンドルインストールが - オプションなしでインストールされないグループのリストを指定できます。無視する複数のグループを指定するには、スペースで区切られたグループのリストを指定します。

バンドルインストール - テスト付きバンドルインストールなし - バンドルインストールを実行した後の開発テスト - テストなしで、バンドラーは、前回のインストールでテストグループを除外したことを覚えています。次回、バンドルインストールを実行すると、オプションがなくても、バンドラーはそれを思い出します。

また、パラメーターなしでbundler.setupを呼び出すか、「バンドラー/セットアップ」を要求する必要があります。

他のヒント

私の場合、それはJenkins Envから宝石をインストールしていました。そのため、Capistranoで変数を使用して自分のbundle_を設定する必要がありました。

gemfile

group :test, :development, :jenkins do  
  gem 'test-unit', '1.2.3'  
  gem 'rspec-rails'
end

deploy.rb

set :bundle_without, [:development, :test, :jenkins]

生産グループを定義していません=)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top