2016-09-13 23 views
1

私はいくつかの宝石をアップグレードしています。あなたのバンドルは互いに依存する宝石を必要とし、無限ループを作ります。宝石を取り除いてください

私が削除した
Your bundle requires gems that depend on each other, creating an 
infinite loop. Please remove gem 'abc' and try again. 

が、このエラーが解決しない:私はbundleをcalllとき、私はこれを持っています。

+3

問題を解決するために使用している宝石と使用している正確な手順を教えてください。 – MarsAtomic

答えて

3

Gemfile.lockを削除し、bundle updateを実行することをお勧めします。

これはなぜ機能するのですか?時々あなたは宝石の古いバージョンを強制的にロードしています。ロードするにはその宝石の新しいバージョンが必要です。

Gemfile.lockを削除すると、バンドルが正しいバージョンのgemをダウンロードできるようになります。

これがうまくいかない場合、別の宝石と競合するgem "paperclip", "~> 4.2"のような宝石のバージョンを強制的に読み込んでいるかもしれませんが、これはあまり一般的ではありませんが起こります。問題のある宝石を見つけて、gem "paperclip"のようなバージョンを削除するか、矛盾している他の宝石を見つけて、その宝石の正しいバージョンを入手する必要があります。 gitを使用している場合は、古いGemfile.lockに戻って、矛盾している宝石のバージョンを確認し、それらの宝石のバージョンを強制することができます。あなたのGemfile.lockの削除がうまく行こうとしましょう。

1

注:これを読み続ける前に、既に削除した場合に備えて、Gemfile.lockファイルのコピーが必要です。

これは遅いかもしれませんが、上記を行い、同じ問題に直面している人々のためにこれを試す価値があります。

私のソリューションでした:

  1. あなたが持っているGemfile.lockファイルを使用します(多分、以前のビルドからそれを取得する)と、チャンクはお互いに依存している宝石のいずれかに属して削除します。
  2. 実行bundle install
  3. 上記の手順が機能しなかった場合
  4. 、繰り返して(ステップ1と2)が、現在、他の宝石に属し Gemfile.lockでチャンクを削除しています。
  5. 上記が完全に機能しない場合は、何も削除せずに(手順1)試してください。次に、両方の宝石をbundle update --source gem_name_hereで更新します。今度は、bundle installの前にアプリを実行しても問題が解決しない場合は、アプリを実行する前にbundle installを試してみてください。
関連する問題