1

bundleコミットする前に呼び出すのを忘れた場合に備えて、プロジェクトの Gemfile.lock が Gemfile と一致するかどうかを確認する単体テストを作成したいと考えています。

bundleこれを確認するコマンド (または別の方法)のオプションはありますか?

bundle checkこの目的には適さないことに注意してください。Gemfile 内のすべての gem がローカル システムにインストールされているかどうかを確認しますが、Gemfile.lock は確認しません。したがって、サーバー上のコマンドは、開発マシンまたは CI で成功したbundle install --deployment場合でも失敗する可能性があります。bundle check

4

3 に答える 3

3

試す:

cp Gemfile.lock Gemfile.lock.orig
bundle install
diff Gemfile.lock Gemfile.lock.orig && echo "Gemfile.lock matches Gemfile"
于 2013-05-03T14:20:47.457 に答える
3

bundle checkコマンドを使用

Check は、Gemfile で要求された各 gem をローカル マシンで検索します。すべての gem が見つかった場合、Bundler は成功メッセージを出力し、ステータス 0 で終了します。そうでない場合、最初に見つからない gem がリストされ、Bundler はステータス 1 で終了します。

于 2013-05-03T11:42:44.343 に答える
0

Gemfile は通常、Gemfile.lock とは一致しません。これは、バンダーが Gem のすべての依存関係を解決し、ツリー形式で Gem の名前の下にそれらを配置するためです。さらに、Gemfile.lock の目的は、バンドルのインストール中に Bunder が多数の互換性のある gem を見つけたときに競合が発生した場合に、バージョン番号とその他の依存関係を解決することだけです。

bundle update コマンドを実行すると、Gemfile.lock が削除され、新しい依存関係を持つ新しい Gemfile.lock が生成されます...

于 2013-05-03T11:43:48.373 に答える