Я хочу знать, должен ли я указывать версию драгоценного камня для каждого драгоценного камня, который я добавляю в Gemfile, или нет. Ранее с несколькими моими проектами я не указывал ни одной версии для всех гемов, и упаковщик позаботился об этом, что также хорошо работало.
Но недавно я начал работать над несколькими проектами, которые разрабатывались в течение последних 6 месяцев. В этом проекте многие версии gem были указаны только в Gemfile, а Gemfile.lock был проигнорирован. Это вызвало много головной боли, чтобы окончательно разрешить конфликты версий и обновить несколько драгоценных камней.
Также узнал, что удаление Gemfile.lock из системы контроля версий приложения - плохая практика - хорошая статья от yehuda - http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
Итак, мой вопрос: я должен указать версию для каждого драгоценного камня, который я указываю в Gemfile, или просто указать имя, и упаковщик позаботится о версии? Как лучше всего справляться с этим?
ОБНОВЛЕНИЕ -
Обновление этого вопроса для правильного определения проблемы, поскольку Gemfile решает множество проблем:)
Проба 1 - У каждого разработчика должна быть одна и та же версия гемов.
Фактически добавление Gemfile.lock в систему контроля версий решило эту проблему. Разработчики просто должны позаботиться о том, чтобы они запускали «комплектацию установки» / «комплектацию», а не «комплектацию обновления», поскольку это также обновит версии.
Проб 2 - Некоторые версии драгоценных камней, если они изменены, тормозят код приложения.
На самом деле с omniauth существуют проблемы такого типа, так как API меняется с одной версии на другую. И да, чтобы приложение работало, необходимо указать версии для этого драгоценного камня.
Мой Проб. -
Итак, в моем gemfile, поскольку версии для A и B строго определены, и так как они оба зависят от разных версий Z, что является зависимостью, я даже не могу запустить установку пакета или обновление пакета. Единственным решением было удалить версии и позволить бандлеру принять вызов. Вот почему у меня был вопрос, как -
Gemfile.version_specification_mandatory? # => true / false