Оновіть лише один самоцвіт за допомогою постачальника


233

Я використовую bundler для управління залежностями в моєму додатку rails, і у мене є gem, розміщений у сховищі git, як зазначено нижче:

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

Щоб оновити цей дорогоцінний камінь, я виконую, bundle updateале він також оновлює всі дорогоцінні камені, згадані в Gemfile. Отже, яка команда оновити лише один конкретний дорогоцінний камінь?

Відповіді:


354

Тут ви можете знайти гарне пояснення різниці між

Оновіть як дорогоцінний камінь, так і залежності:

bundle update gem-name 

або

Оновіть виключно дорогоцінний камінь:

bundle update --source gem-name

поряд із приємними прикладами можливих побічних ефектів.

Оновлення

Як говорить відповідь @ Тіма, з Bundler 1.14 офіційно підтримується шлях до цього bundle update --conservative gem-name.


19
Будьте уважні, "оновлення дорогоцінного каміння та залежностей" означає оновлення самих рейок, якщо це залежність, і ви, мабуть, цього не хочете. - джерело оновить лише дорогоцінний камінь, вказаний як параметр. Так що краще в більшості ситуацій.
1.44mb

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

1
@OshanWisumperuma Вкажіть версію в Gemfile або, можливо, Gemfile.lock перед запуском цих команд пакету
Гаррі Вуд

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оновить дорогоцінний камінь і "будь-яку його залежність".
yaka

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, який ви можете порівняти з останнім хешем фіксації цієї гілки гіта (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.