2 回目のbundle install
実行以降、Gemfile が変更されない限り、Gemfile.lock から依存関係が読み込まれます。
しかし、これら 2 つのファイル間の変更の検出はどのように行われるのだろうか。
たとえば、新しい依存関係を Gemfile に追加せずに Gemfile.lock に直接追加する場合 (Gemfile.lock は Gemfile から自動生成されるため、ベスト プラクティスとは対照的に)、bundle install
Gemfile を変更済みと見なしますか?
実際、bundle install
プロセスは、変更を検出するために、Gemfile ツリーと Gemfile.lock ツリー全体を比較しますか?
そうであれば、依存関係を Gemfile.lock に直接追加していても、Gemfile は変更されたものとして検出され (異なるため)、Gemfile.lock を再消去します (したがって、追加された依存関係が失われます...)
bundle install
2回目の打ち上げからの経緯は?
より明確にするために、私の質問は次のとおりです。
変更は Gemfile のみに基づいていますか? bundle install
つまり、バンドラーはすべての実行番号 Nの Gemfile スナップショットを保持し、それをbundle install
実行 N+1 と比較するだけですか?
または、バンドラーのメモリにスナップショットが作成されず、バンドラーは毎回 Gemfile.lock と比較して、Gemfile が変更されたと見なす必要があるかどうかを検出します。