После второго выполнения bundle install
зависимости загружаются из Gemfile.lock до тех пор, пока Gemfile не изменяется.
Но мне интересно, как происходит обнаружение изменений между этими двумя файлами.
Например, если я добавляю новую зависимость непосредственно в Gemfile.lock, не добавляя ее в Gemfile (в отличие от наилучшей практики, поскольку Gemfile.lock автоматически генерируется из Gemfile), будет ли пакетная установка
считать Gemfile измененным?
В самом деле, сравнивает ли процесс bundle install
все деревья Gemfile и Gemfile.lock для обнаружения изменений?
Если это так, даже если я добавлю зависимость непосредственно в Gemfile.lock, Gemfile будет обнаружен как измененный (поскольку другой) и повторно сотрет Gemfile.lock (поэтому потеряет добавленную зависимость...)
Каков процесс установки пакета
с момента запуска во второй раз?
Чтобы быть более ясным, мой вопрос:
Изменения основаны только на Gemfile? Это означает, что упаковщик будет хранить моментальный снимок Gemfile каждого выполнения установки пакета
с номером N и просто сравнивать его с выполнением установки пакета
N+1 ?
Или в памяти упаковщика не создаются моментальные снимки, и упаковщик каждый раз сравнивает с Gemfile.lock, чтобы определить, следует ли считать Gemfile измененным.