Обновите только один драгоценный камень с упаковщиком


233

Я использую bundler для управления зависимостями в моем приложении rails, и у меня есть гем, размещенный в репозитории git, как указано ниже:

gem 'gem-name', :git => 'path/to/my/gem.git'

Чтобы обновить этот драгоценный камень, я выполняю, bundle updateно он также обновляет весь драгоценный камень, упомянутый в Gemfile. Так что команда для обновления только один конкретный камень?

Ответы:


354

Здесь вы можете найти хорошее объяснение разницы между

Обновите гем и зависимости:

bundle update gem-name 

или

Обновите исключительно драгоценный камень:

bundle update --source gem-name

наряду с некоторыми хорошими примерами возможных побочных эффектов.

Обновить

Как говорится в ответе @Tim, начиная с Bundler 1.14, официально поддерживаемый способ - с bundle update --conservative gem-name.


19
Будьте осторожны, «обновление gem и зависимостей» означает обновление самих rails, если это зависимость, и вы, вероятно, этого не хотите. --source обновит только гем, указанный в качестве параметра. Так что лучше в большинстве ситуаций.
1.44мб

как указать версию?
Ошан Висумперума

1
@OshanWisumperuma Укажите версию в Gemfile или, возможно, Gemfile.lock перед запуском этих команд комплекта
Harry Wood

185

Способ сделать это - запустить следующую команду:

bundle update --source gem-name

3
Это именно то, что мне было нужно, у меня есть личный драгоценный камень, и мне нужно только обновить сам драгоценный камень без обновления зависимостей после того, как я внес некоторые изменения в частный драгоценный камень.
Я лягушачий дракон

30

Похоже, что с более новыми версиями bundler (> = 1.14) это:

bundle update --conservative gem-name

примечание: эта команда обновит один драгоценный камень без каких-либо зависимостей
mmike

24

Вам просто нужно указать имя гема в командной строке:

bundle update gem-name

1
Странный. Вот что bundle help updateговорит делать. Какую версию пакета вы используете?
Брендан

40
bundle update gem-nameобновит гем и "любую из его зависимостей".
Яка

5

bundle update gem-name [--major|--patch|--minor]

Это также работает для зависимостей.


1
Есть ли способ обновить его до определенной версии? --major, --minorИ --patchфлаги автоматически обновить его до последней возможной версии.
user2490003

2

Я использовал bundle update --sourceсебя в течение долгого времени, но есть сценарии, где это не работает. К счастью, есть драгоценный камень под названиемbundler-patch который исправить этот недостаток.

Я также написал небольшой пост в блоге о том, как использовать bundler-patchи почему bundle update --sourceне работает последовательно. Также обязательно ознакомьтесь с постом chrismo, в котором подробно объясняется, что --sourceделает этот параметр.


0

bundler update --source gem-name обновит хэш ревизии в Gemfile.lock, который вы можете сравнить с последним хэшем коммита этой ветки git (master по умолчанию).

GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

можно найти по адресу github.com/organization/repo-name/commits/c810f4a2(я использовал сокращенный 8-символьный хеш коммит для URL)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.