Что происходит при изменении Gemfile.lock напрямую?

После второго выполнения 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 измененным.

12
задан Mik378 21 June 2012 в 10:10
поделиться