Указать ли версии Gem принудительно в Gemfile или нет для приложения rails

Я хочу знать, должен ли я указать версию gem для каждого драгоценного камня, который я добавляю в Gemfile или нет. Ранее с некоторыми из моих проектов я не указывал никаких версий для всех драгоценных камней, и bundler позаботился об этом, что также сработало.

но недавно я начал работать над несколькими проектами, которые разрабатывались за последние 6 месяцев. В этом проекте многие версии gem были указаны только в Gemfile и Gemfile.Локка проигнорировали. Это вызвало много головной боли, чтобы окончательно решить версия конфликты и обновление несколько драгоценных камней.

также должен знать, что это плохая практика для удаления Gemfile.блокировка от управления версиями приложений-хорошая статья yehuda - http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/

Итак, мой вопрос: Должен ли я указать версию для каждого драгоценного камня, который я указываю в Gemfile, или просто указать имя, и bundler позаботится о версии ? Какова наилучшая практика для этого ?

обновление -

обновление этого вопроса, чтобы правильно указать проблему, так как Gemfile sovles много проблем:)

Prob 1-каждый разработчик должен иметь одинаковую версию gems. На самом деле добавление Gemfile.lock into version control решил эту проблему. Разработчикам просто нужно позаботиться о том, чтобы они запускали "bundle install" / "bundle", а не "Bundle update", поскольку это также обновит версии.

Prob 2-Некоторые версии gems, если они изменены, тормоза код приложения. На самом деле с omniauth,есть этот тип проблем, как API меняются от одной версии к другой. И да,чтобы приложение продолжало работать, для этого нужно будет указать версии.

Моя Забота. - Итак, в моем gemfile, поскольку версии для A и B строго указаны, и поскольку они оба зависят от разных версий Z, что является зависимостью, я даже не могу запустить установку пакета или обновление пакета. Единственным решением было удалить версии и позволить bundler чтобы ответить на звонок. Поэтому у меня вопрос, как - Gemfile.version_specification_mandatory? # = > true / false

3 ответов


Я думаю, что лучше не укажите версии gem в файле Gemfile. В редких случаях может потребоваться указать версию-например, когда более новая версия нарушает ваше приложение. Но указание версий для всех ваших драгоценных камней, как правило, излишне. Этом Файле.файл блокировки (который вы не редактируете, но проверяете в системе управления версиями) будет удерживать более новые версии gems от использования в вашем приложении, пока вы явно не обновите их.


Если вы используете gem для чего-то, что доступно только в определенной версии, вам нужно указать версию.

упаковщик устанавливает последнюю версию или использует доступную версию в системе, если версия не указана. Это работает для разработчика, потому что последняя версия имеет функцию, которая ей нужна. Но если функция теряется в будущих версиях того же gem и версия не указана в Gemfile, все последующие установки gem для разные люди или разные машины будут производить нежелательные эффекты.

Я столкнулся с этими проблемами, особенно для версий-кандидатов на выпуск 3.


Я написал сообщение в блоге, учитывая все обсуждаемые моменты.

посмотрите здесь - http://rtdptech.com/2011/09/specifying-gem-versions-in-gemfile-for-rails-application/