web-dev-qa-db-ja.com

本番サーバーで宝石を更新できません

本番サーバーでは宝石を更新できません。

私はもう試した 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再び

32
pcasa

指示はおそらく少し混乱しています。変更をコミットする前にbundle installを実行するのではなく、開発マシンでGemfileを変更し、それらの変更をプッシュしたということです。

bundle installを実行すると、Gemfile.lockファイルが更新されます。これはGemfileよりも重要であるため、サーバーにプッシュする必要があります。 Gemfile _Gemfile.lockファイルの計画を検討してください。

常に次のことを忘れないでください。

  1. 確認のためにGemfileを変更する場合は、bundle installを実行します。遅すぎる場合は、--localを渡して、ローカルのgemのみを使用して依存関係を解決するように強制します。
  2. GemfileおよびGemfile.lockファイルをリポジトリにコミット両方
  3. GemfileGemfile.lockの両方を本番サーバーにデプロイして、開発環境とまったく同じ依存関係が実行されていることを確認します。

bundle updateを単独で実行すると、アプリケーションの依存関係をall更新する危険性があると解釈されます。 Gemfileで明確なバージョン番号を指定していない場合、これは主に危険です。私 ここにそれについて書いた。

46
Ryan Bigg

FWIWこの問題があり、Gemfile(OSの条件)からいくつかの条件ステートメントを削除してバンドルを再実行することで修正しました。

9
TomL

参考:次のようなソースブロックを使用した場合にも、このエラーが発生する可能性があります。

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ソースの使用について。)

7
Jim Flood

これは、デプロイ先のサーバー(この場合は本番)にある古いバージョンのbundler gemが原因である可能性があります。サーバーにログインしてgem update bundlerを実行すると、問題が解決しました。デプロイ先のサーバーはバージョン1.7.4で、現在のバージョンは1.9でした。

3
paul

Gemfile.lockが正しい更新されたバージョンを示していても、プロダクションサーバーで古いバージョンのgemを使用しているときに問題が発生しました。私のプロダクションサーバーはUnicornで実行されていて、シャットダウン/再起動して問題を修正しました-HUP信号を送信する代わりに、すべてをジャックして問題を修正しました。

2
Jamsi

osx上のmysql-gemが原因で、バンドルのインストールが「開発」マシンで失敗しました...

簡単な修正も必要でした。そのため、本番マシンの新しいフォルダーにリポジトリを複製し、そこで「バンドルインストール」を実行して、Gemfile.lockをリポジトリにコミットしました。

1
randomcontrol

私はこの問題を抱えていました(Ubuntu 12.10&12.04、そのうちの1つはプロキシサーバーの背後にあります)。私の問題は、Gemfileにいくつかのgit://プロトコルが含まれていたことでした。これをhttp://に変更すると、すべてが機能するようになります。

1
Emil Rehhnberg