私は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.
この競合を解決するにはどうすればよいですか?
Gemfile.lock
の内容を削除し、bundle install
を再実行してください。それは私のために働いています。
エラーメッセージが指摘するようにbundle update
を実行しましたか? bundle install
はGemfileへの変更を処理し、bundle update
はBundlerによってすでに管理されているgemをアップグレードします。 Gemfile.lockファイルはバージョン番号をロックします。bundle update
は、Gemfileで直接指定されていないもの(gem 'Rails', '3.0.9'
など)を更新します。
Gemfile.lockの削除は機能しますが、bundle update
を実行することをお勧めします。
Gemfile.lock
を単に削除することはできません。それが解決策である場合、最初にGemfile.lock
が存在する理由、コードはこのファイルでロックされているバージョンに依存します。原因となるGemのみを更新してくださいbundle update gem_name
を使用して競合が発生した場合、新しいバージョンを使用するために必要な変更がないかReadMeを確認する必要があります。
指定したバージョンのRailsを削除することで問題が解決されました....
gem Rails, '4.0.4'
やった
gem Rails
その後、Gemfile.lockを削除して再実行しますbundle install
削除する場合Gemfile.lock
が機能しない別の可能性があります。
依存している宝石の.gemファイルに誤って独自のGemfile.lockが含まれている可能性があります。解決策は、問題のあるGemを更新してGemfile.lockを含めないようにし、再構築して再インストールすることです。
別の方法は、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
エラーも発生します。