本番サーバーでは宝石を更新できません。
私はもう試した bundle install --deployment
およびbundle install --without development test
しかし、続けてください:
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.
If this is a development machine, remove the Gemfile freeze
by running `bundle install --no-deployment
これが正しいかどうかはわかりませんが、簡単な修正が必要でした。私は走ったbundle install --no-deployment
、次にbundle update
を実行したbundle install --deployment
再び
指示はおそらく少し混乱しています。変更をコミットする前にbundle install
を実行するのではなく、開発マシンでGemfile
を変更し、それらの変更をプッシュしたということです。
bundle install
を実行すると、Gemfile.lock
ファイルが更新されます。これはGemfile
よりも重要であるため、サーバーにプッシュする必要があります。 Gemfile
_Gemfile.lock
ファイルの計画を検討してください。
常に次のことを忘れないでください。
Gemfile
を変更する場合は、bundle install
を実行します。遅すぎる場合は、--local
を渡して、ローカルのgemのみを使用して依存関係を解決するように強制します。Gemfile
およびGemfile.lock
ファイルをリポジトリにコミット両方Gemfile
とGemfile.lock
の両方を本番サーバーにデプロイして、開発環境とまったく同じ依存関係が実行されていることを確認します。bundle update
を単独で実行すると、アプリケーションの依存関係をall更新する危険性があると解釈されます。 Gemfile
で明確なバージョン番号を指定していない場合、これは主に危険です。私 ここにそれについて書いた。
FWIWこの問題があり、Gemfile(OSの条件)からいくつかの条件ステートメントを削除してバンドルを再実行することで修正しました。
参考:次のようなソースブロックを使用した場合にも、このエラーが発生する可能性があります。
source 'https://Rails-assets.org' do
gem 'Rails-assets-jquery'
end
このgemのGemfile.lockに感嘆符が表示されます。
Rails-assets-jquery!
通常、追加のソースを定義するだけです。
source 'https://Rails-assets.org'
gem 'Rails-assets-jquery'
(BTW cf. here 複数のGemソースの使用について。)
これは、デプロイ先のサーバー(この場合は本番)にある古いバージョンのbundler gemが原因である可能性があります。サーバーにログインしてgem update bundler
を実行すると、問題が解決しました。デプロイ先のサーバーはバージョン1.7.4で、現在のバージョンは1.9でした。
Gemfile.lockが正しい更新されたバージョンを示していても、プロダクションサーバーで古いバージョンのgemを使用しているときに問題が発生しました。私のプロダクションサーバーはUnicornで実行されていて、シャットダウン/再起動して問題を修正しました-HUP信号を送信する代わりに、すべてをジャックして問題を修正しました。
osx上のmysql-gemが原因で、バンドルのインストールが「開発」マシンで失敗しました...
簡単な修正も必要でした。そのため、本番マシンの新しいフォルダーにリポジトリを複製し、そこで「バンドルインストール」を実行して、Gemfile.lockをリポジトリにコミットしました。
私はこの問題を抱えていました(Ubuntu 12.10&12.04、そのうちの1つはプロキシサーバーの背後にあります)。私の問題は、Gemfileにいくつかのgit://
プロトコルが含まれていたことでした。これをhttp://
に変更すると、すべてが機能するようになります。