TL;DR: 実行してみてくださいbundle update
。
Bundler は、すべての依存関係も一致するような方法で一致する gem を見つけようとします。したがって、これを考慮してください:
- gem A v1 は B v1 に依存する
- gem A v2 は B v2 に依存する
- gem C v1 は B v1 に依存します
- B v2 の処理方法を知っている C のバージョンはありません。
この場合、Bundler は A を v1 に選択 (またはダウングレード) するため、A と C を隣り合わせで実行できます。
ただし、これが起こらないようにする可能性のあることがいくつかあり、それが表示されているエラーの原因になります。
- A v1 がないため、まったく一致しません。この場合、これらの宝石はまったく連携しません。
- 既に A v2 をインストールしており、後で C を追加します。これは、Bundler が A をダウングレードする必要があることを意味しますが、実行中のみの場合はダウングレード/アップグレードを行いません
bundle install
。bundle update A
gemfile: 内のすべての gem を実行して依存関係を再計算する必要があることを具体的に言う必要がありますbundle update
。
- gem の 1 つは git リポジトリからのものです。Git リポジトリには、実際には rubygems.org でホストされている gem のようなバージョンはありません。これは、Bundler が最新バージョンのみをフェッチし、その gem をダウングレードできないことを意味します。この場合、ブランチまたはリビジョンを手動で指定する必要があります。
私の推測では、シナリオ 2 を見ていると思います。ファラデーのバージョン 0.8.9 は既にインストール (およびロックダウン) されています。Twitter を追加すると、以前のロックを更新する必要があります。
bundle update
ただし、引数なしで実行する場合は注意してください。gemfile 内のすべての gem の最新バージョンを取得しようとしますが、これはあなたが望むものではないかもしれません。