web-dev-qa-db-ja.com

Bundlerはgemの互換バージョンを見つけることができませんでした

私はGemfileにgem 'koala'を追加し、 'bundle install'コマンドを実行するとghackバージョンからgemバージョンがスローされたようです:

Bundler could not find compatible versions for gem "faraday":
In snapshot (Gemfile.lock):
faraday (0.6.1)

In Gemfile:
koala (~> 1.2.0beta1) depends on
  faraday (~> 0.7.4)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

この競合を解決するにはどうすればよいですか?

27
hagope

Gemfile.lockの内容を削除し、bundle installを再実行してください。それは私のために働いています。

52
Lance Pollard

エラーメッセージが指摘するようにbundle updateを実行しましたか? bundle installはGemfileへの変更を処理し、bundle updateはBundlerによってすでに管理されているgemをアップグレードします。 Gemfile.lockファイルはバージョン番号をロックします。bundle updateは、Gemfileで直接指定されていないもの(gem 'Rails', '3.0.9'など)を更新します。

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

30
Greg Olsen

Gemfile.lockを単に削除することはできません。それが解決策である場合、最初にGemfile.lockが存在する理由、コードはこのファイルでロックされているバージョンに依存します。原因となるGemのみを更新してくださいbundle update gem_nameを使用して競合が発生した場合、新しいバージョンを使用するために必要な変更がないかReadMeを確認する必要があります。

5
mohamed-ibrahim

指定したバージョンのRailsを削除することで問題が解決されました....

gem Rails, '4.0.4'

やった

gem Rails

その後、Gemfile.lockを削除して再実行しますbundle install

4
copremesis

削除する場合Gemfile.lockが機能しない別の可能性があります。

依存している宝石の.gemファイルに誤って独自のGemfile.lockが含まれている可能性があります。解決策は、問題のあるGemを更新してGemfile.lockを含めないようにし、再構築して再インストールすることです。

2
JohnIV

別の方法は、Gemfile.lockに移動して、問題のあるgem(この場合はfaraday gem)への参照をすべて削除することです。次にbundle installを実行すると、Gemfile.lockが更新され、互換性のあるバージョンのgemが必要な場所に配置されます。さらに安全にしたい場合は、Gemfileに移動して、これを行う前に必要なgemのバージョンを指定できます。

これは、私が維持しているシステムの1つでbundle installを実行できる唯一の方法でした。このシステムは依存関係に多くの古いgem(執筆時点では58 gem)を持っているため、bundlerはそれに対処するのに苦労しています。 Gemfile.lockを削除してbundle installを実行すると、複数のBundler could not find compatible versions for gem xxxxxxエラーで爆破されます。 bundle updateを実行すると、複数のBundler could not find compatible versions for gem xxxxxxエラーも発生します。

0
João Neves