Могу ли я остановить Bundler от добавления RUBY VERSION в Gemfile.lock

Каждый раз, когда я запускаю команду gem в командной строке, Bundler настаивает на касании моего файла Gemfile.lock, чтобы добавить эту строку:

RUBY VERSION
   ruby 2.2.2p95

Я не хочу передавать это в наш репозиторий, потому что это означает, что каждый разработчик, использующий другой уровень патчей Ruby 2.2.2, будет в состоянии совершить войну со мной. (Я уже смирился с аналогичной проблемой с линией BUNDLED_WITH.) Но я не могу развернуть, если я не выполняю эту строку, потому что наше развертывание выполняется с помощью задачи rake и запускает развертывание Bundler для добавления этого блока, после чего процесс развертывания говорит: "ПОДОЖДИТЕ! Ваше рабочее дерево грязно! Возможно, вы развертываете неполные изменения!!!! 1!" (Ну, не в буквальном смысле, но вы получаете идею.)

Можно ли сообщить Bundler оставить RUBY VERSION (и, в идеале, BUNDLED_WITH) из Gemfile.lock, поэтому нам не нужно делать этот смешной танец?

(как предотвратить сборщик от добавления информации о платформе в Gemfile.lock, похоже, тот же вопрос, но ответа нет, natch.)

Ответ 1

Я так не думаю, но, возможно, все в порядке:

Начиная с версии 2.1.0, Ruby больше не имеет нескольких выпусков уровня патча для данной версии. См. Принятый ответ Как номера версий работают для MRI Ruby?

2.2.2p95 - единственный уровень исправления 2.2.2, который когда-либо будет выпущен. "p95" означает, что с 2.2.0 произошло 95 коммитов.

Так как вся ваша команда будет на 2.2.2 в любом случае, это не должно вызывать проблем с этим в вашем Gemfile.lock. (Пока все обновляют Bundler до версии, которая это делает, так или иначе, в противном случае конфликты будут по мере добавления и удаления рубиновой версии.)

Ответ 2

Нет, он не может быть удален, по крайней мере, в версии (-ах) потока Bundler, когда я пишу это.

Этот блок добавлен в методе #to_lock Bundler:: Определение. Единственное условие, которое оно завернуло, - это if locked_ruby_version, а locked_ruby_version - это метод, который возвращает либо версию, определенную в существующем файле блокировки (Gemfile.lock), либо система Ruby-Bundler очень сильно пытается избежать предоставления locked_ruby_version возврата ложное значение.

Ответ 3

Если вы используете какой-то контроль версий, например Git, вы можете добавить Gemfile.lock в ваш файл .gitignore.

Таким образом, в любое время, когда вы поднимете новое изменение, вы не будете продвигать свой Gemfile.lock. Тем более, что другим разработчикам это не нужно - как только они запускают пакет, пакет будет создавать новый Gemfile.lock при завершении.