Есть ли способ получить версию гема до запуска комплекта установки (из Gemfile.lock) - PullRequest
1 голос
/ 03 апреля 2019

Я хочу получить версию Gem без установки пакета.То есть я хочу выяснить, какую версию пакета планируется установить без фактической установки гема.Скажем, прочитайте это из Gemfile.lock (и Gemfile) вместе взятых.

Есть ли способ решить, какую версию пакета планируется установить?

Мне это нужно, потому что я хочу кешировать дорогостоящие установки при запуске сборки докера.

Для установки драгоценных камней, таких как rails (nokogiri), требуется некоторое время, и я хотел бы выполнить gem install rails -v ... на предыдущем шаге перед запуском комплекта установки.

Для этого янужно получить версию рельсов перед рукой

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

По умолчанию, если в Gemfile не указана версия, при запуске bundle install будет предпринята попытка установить последнюю версию гема, которая совместима с остальными версиями гемов и рубинов в вашем проекте. Это создаст файл Gemfile.lock, если он еще не существует. Если файл Gemfile.lock уже зафиксирован для git repo, он должен установить версии, указанные в Gemfile.lock. Задача компоновщика - работать с зависимостями, чтобы гарантировать, что ваш стек работает правильно.

Чтобы увидеть версию сборщика гемов, вы можете запустить

bundle show rails

Возможно, вы захотите указать версию ruby ​​в Gemfile, например

ruby '~> 2.5'  #

Вы можете указать точную версию гема в Gemfile, например, такую, на которую вы сможете положиться, чтобы быть установщиком версий, если он совместим с остальной частью стека. bundle install выдаст ошибки, если есть несовместимые версии гемов.

gem 'rails', '4.2.11' # this will always install only this version.

Вы также можете использовать пессимистический оператор (~>) для установки только незначительных обновлений

gem 'influxdb', '~> 0.6.1' # could go to 0.6.2 but never 0.7.0

Вы также можете установить минимальные версии, подобные этой, хотя это, вероятно, не то, что вам нужно для вашего вопроса.

gem 'pg_query', '>= 0.9.0'

Если в вашем репозитории уже есть Gemfile.lock, вы можете увидеть, какая версия будет установлена, запустив, например:

gem show rails

Который покажет вам версию и узнает, установлена ​​она или нет.

Подробнее см. bundle --help

1 голос
/ 03 апреля 2019

Если вы добавили новый гем в свой гемфайл, но не сделали bundle install, он еще не устанавливается.Вместо этого вы можете запустить bundle lock, который сгенерирует новый файл блокировки.Это включает в себя версию драгоценного камня нового драгоценного камня, который будет установлен.Запустив bundle show new_gem, он показывает, что он на самом деле не установлен.

Чтобы быть уверенным, возможно, получите резервную копию оригинального Gemfile.lock перед выполнением команды.

...