Обновите только один драгоценный камень с упаковщиком
Я использую bundler для управления зависимостями в моем приложении rails, и у меня есть гем, размещенный в репозитории git, как указано ниже:
gem 'gem-name', :git => 'path/to/my/gem.git'
Чтобы обновить этот драгоценный камень, я выполняю bundle update
но он также обновляет весь драгоценный камень, упомянутый в Gemfile. Так что же такое команда для обновления только одного конкретного драгоценного камня?
7 ответов
Здесь вы можете найти хорошее объяснение разницы между
Обновите гем и зависимости:
bundle update gem-name
или же
Обновите исключительно драгоценный камень:
bundle update --source gem-name
наряду с некоторыми хорошими примерами возможных побочных эффектов.
Обновить
Как говорится в ответе @Tim, в Bundler 1.14 официально поддерживаемый способ это bundle update --conservative gem-name
,
Способ сделать это - запустить следующую команду:
bundle update --source gem-name
Похоже, что с более новыми версиями bundler (>= 1.14) это:
bundle update --conservative gem-name
Вам просто нужно указать имя гема в командной строке:
bundle update gem-name
bundle update gem-name [--major|--patch|--minor]
Это также работает для зависимостей.
Я использовал bundle update --source
Я долгое время, но есть сценарии, где это не работает. К счастью, есть драгоценный камень под названием bundler-patch
которая имеет целью исправить этот недостаток.
Я также написал небольшой пост в блоге о том, как использовать bundler-patch
и почему bundle update --source
не работает последовательно. Кроме того, обязательно ознакомьтесь с постом chrismo, в котором подробно объясняется, что --source
вариант делает.
Если вы хотите обновить отдельный гем до определенной версии:
- изменить версию гема в Gemfile
bundle update
> ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
> gem -v
3.0.3
> bundle -v
Bundler version 2.1.4
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)