Сборщик: всегда используйте последнюю версию ветки git в Gemfile

У меня есть Gemfile с частным репозиторием git в следующем формате:

gem 'magic_beans', :git => "[email protected]:magic_beans.git', :branch => 'super_beans'

Когда я bundle install, Gemfile.lock блокирует его для конкретной версии SHA.

Могу ли я заставить упаковщик всегда проверять и использовать последнюю фиксацию SHA и/или обновлять Gemfile.lock? Обратите внимание, что когда я отправляю обновления в ветку super_beans, я не изменяю версию gem.

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


person pithyless    schedule 30.11.2011    source источник


Ответы (4)


Это не то, как упаковщик работает. Суть в том, чтобы разрешить плавное управление версиями зависимостей. (особенно, чтобы вы точно знали, какая версия кода развернута в любой момент времени).

Если вам нужна последняя версия, вы должны просто запустить.

bundle update magic_beans

Это точно такая же функциональность, как если бы вы просто сказали

gem "rails"

Однако я бы посоветовал, если у вас есть ряд конкретных вещей, которые вы хотите обновить, добавьте собственный двоичный файл (скажем, исполняемый файл с именем bundle_update)

#!/usr/bin/env bash
bundle install
bundle update magic_beans

Затем просто выполните ./bundle_update, когда захотите обновить эти вещи.

person Matthew Rudy    schedule 30.11.2011
comment
Если я заменю :git на использование :path вместо этого, bundle install с радостью будет использовать новейший SHA каждый раз. Я просто продолжу использовать bundle update, но не думаю, что это обязательно идеальное решение. В конце концов, в моем Gemfile я рассматриваю не :revision, а :branch. Спасибо за отзыв! - person pithyless; 30.11.2011
comment
Я знаю, что это очень старо, но установка :path всегда обновляется, потому что она загружается из каталога, а не из репозитория git или удаленного драгоценного камня. :path отлично подходит для совместной локальной разработки двух проектов, но ломается, как только вы начинаете совместную работу. - person Matthew Rudy; 12.07.2013

Вы можете запустить bundle update, чтобы обновить все или определенные драгоценные камни до их последней доступной версии, как указано в документы.

Это поможет?

person leonardoborges    schedule 30.11.2011
comment
Я предполагаю, что если репозитории приложений и драгоценных камней принадлежат вам, а драгоценный камень претерпевает множество небольших изменений, болезненно также выполнять фиксацию в основном приложении, чтобы все время указывать на последнюю фиксацию. - person lulalala; 15.08.2013

После поиска в документах я наконец нашел волшебный способ сделать это:

bundle update magic_beans --source magic_beans

То есть обновить только гем magic_beans, но не трогать другие заблокированные гемы. Документация по этому поводу: http://bundler.io/man/bundle-update.1.html

person Michael Yin    schedule 11.02.2015
comment
Первый magic_beans не нужен. Вы можете просто сделать bundle update --source magic_beans. - person lukeasrodgers; 01.04.2015

удалить .gemlock - это то, что сработало для меня:/

person Fabián Contreras    schedule 11.06.2018