bundle install
の2度目の実行以来、Gemfileが変更されない限り、依存関係はGemfile.lockからロードされます。Gemfile.lockを直接変更するとどうなりますか?
しかし、これら2つのファイルの間でどのように変更が検出されたのだろうか。
たとえば、Gemfile.lockに直接Gemfile.lockに新しい依存関係を追加する場合(Gemfile.lockがGemfileから自動生成されているのでベストプラクティスとは対照的に)、bundle install
はGemfileをかわった ?
確かに、変更を検出するために、bundle install
プロセスはGemfileとGemfile.lockツリー全体を比較しますか?
Gemfile.lockに直接依存関係を追加しても、Gemfileは変更されたとして検出され、Gemfile.lockを再消去します(追加された依存関係を失う...)
2回目の打ち上げ以来、bundle install
の処理は何ですか?
より明確にするために、私の質問は:
はGemfileからベースの変化はありますか?これは、bundlerがすべてのbundle install
実行番号NのGemfileスナップショットを保持し、単にそれをbundle install
実行N + 1と比較することを意味しますか?
または、バンドラメモリにスナップショットが作成されず、バンドラは毎回Gemfile.lockと比較して、Gemfileを変更したものとみなす必要があるかどうかを検出します。
Gemlockファイルを削除し、gemファイルに必要なgemを入れて、 'bundle install'を実行してください。それでおしまい。私はgemlockファイルについて多くのことを考えるのは良い考えだとは思わない。 ;) – uday
@uDaY私はあなたに同意しますが、私はバンドルインストールのフードの下でプロセスに興味があります:) – Mik378
[this](http://gembundler.com/rationale.html)と[this] http://gembundler.com/man/bundle-install.1.html)? –