web-dev-qa-db-ja.com

すでにラック1.6.0をアクティブ化していますが、Gemfileにはラック1.6.4が必要です

ラック1.3.2の問題。すでにラック1.3.2をアクティブ化していますが、Gemfileにはラック1.2.3が必要です -Railsを実行しようとするとYou have already activated rack 1.6.0, but your Gemfile requires rack 1.6.4が発生します( 4.2)PumaとNginxで生産中。

bundle update rakerm Gemfile.lock && bundle installも役立つようですが、これまでのところ、Gemfile.lockでrack (1.6.4)rack (1.6.0)に手動で変更するしかありません。

18
Mark Boulder

不要な1つのバージョンのラックをアンインストールする必要があります。

これをしてください

gem uninstall rack -v 1.6.0

参照: 通常の「ラックをすでにアクティブ化しています...」バグを回避するようにラックを強制する方法は?

19
Athar

経験豊富な1人Rails開発者 強くお勧めします ビンスタブを使用します。インストール者:

bundle install --binstubs

相対パスを介して実行します。

./bin/Rails server

または、最も推奨される更新PATHで、バンドラーの問題を忘れてください。

export PATH="./bin:$PATH"
Rails server
2
Anatoly

次のように実行します:bundle exec Rails s。これは、Gemfile.lockの設定を使用します

1
Zepplock

これらの問題は、複数のプロジェクトにローカルまたはグローバルのgemsetを使用している場合に発生する可能性があります。プロジェクトごとに個別のgemsetを作成してみませんか。

あなたはrvmを使用してこれを行うことができます

新しいジェムセットを作成する

rvm gemset create new_test

rvm gemset use new_test

bundle install
1
Syed Shibli

以下のcmdを実行するだけで、サーバーに最新のラックをインストールして問題を解決できます。

gem install rack
0
Ravistm

私はこの問題を経験しました:

これが私の解決策です

解決策1

このソリューションは多くの場合機能し、問題の原因となっているgemを更新するだけです。

bundle update rack

ソリューション2

場合によってはソリューション1が機能しない可能性があり、Gemfile.lockファイルを編集する必要があります。

Gemfile.lockファイルを開いて、バージョンを要求された更新に変更するだけです。

私の場合、rack 2.0.7ファイルにGemfile.lockを定義しましたが、アプリケーションにはrack 2.1.2が必要でした。単に、rack 2.1.2Gemfile.lockに変更する必要がありました。ファイル。

次に、以前のバージョンのrack 2.0.7であるラックをアンインストールする必要がありました。

 gem uninstall rack -v 2.0.7

そしてついに新しいgemを本番環境にインストールしました

bundle install --without development test

ソリューション

非常にまれなケースですが、ソリューション1およびソリューション2が機能しない場合があり、gemを更新する前にGemfileを編集する必要があります。

私の場合、gemはpumaで、Gemfilepuma ~> 3.11が定義されていましたが、アプリケーションにはpuma ~> 4.3.1が必要でした。この時点で、Gemfileで指定されたbundle update pumaバージョンではGemfile.lockの更新が許可されないため、puma ~> 3.11を実行してpuma ~> 4.3.1ファイルを編集することはできませんでした。

Gemfileのpumaのバージョンをpuma ~> 4.3.1に変更してから、コマンドを実行するだけで済みました。

bundle update puma

それで全部です。

これがお役に立てば幸いです

0
Promise Preston