Zaktualizuj tylko jeden klejnot w pakiecie


233

Używam bundlera do zarządzania zależnościami w mojej aplikacji railsowej i mam klejnot hostowany w repozytorium git w następujący sposób:

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

Aby zaktualizować ten klejnot, bundle updatewykonuję go, ale aktualizuje on również wszystkie klejnoty wymienione w Gemfile. Więc jakie jest polecenie, aby zaktualizować tylko jeden konkretny klejnot?

Odpowiedzi:


354

Tutaj możesz znaleźć dobre wyjaśnienie różnicy między

Zaktualizuj klejnot i zależności:

bundle update gem-name 

lub

Zaktualizuj wyłącznie klejnot:

bundle update --source gem-name

wraz z kilkoma fajnymi przykładami możliwych skutków ubocznych.

Aktualizacja

Jak mówi odpowiedź @ Tima, od Bundlera 1.14 oficjalnie wspierane jest to bundle update --conservative gem-name.


19
Bądź ostrożny, „aktualizacja klejnotów i zależności” oznacza aktualizację samych szyn, jeśli jest to zależność i prawdopodobnie tego nie chcesz. --source zaktualizuje tylko klejnot określony jako parametr. Tak jest lepiej w większości sytuacji.
1.44mb

jak określić wersję?
Oshan Wisumperuma

1
@OshanWisumperuma Określ wersję w Gemfile lub ewentualnie Gemfile.lock przed uruchomieniem tych poleceń pakietu
Harry Wood

185

Aby to zrobić, uruchom następujące polecenie:

bundle update --source gem-name

3
Właśnie tego potrzebowałem, mam prywatny klejnot i muszę tylko zaktualizować sam klejnot bez aktualizacji zależności po tym, jak wprowadziłem kilka zmian w prywatnym klejnocie.
Jestem smokiem-żabą

30

Wygląda na to, że w nowszych wersjach pakietu (> = 1,14) jest to:

bundle update --conservative gem-name

Uwaga: to polecenie zaktualizuje jeden klejnot bez jego zależności
mmike

24

Musisz tylko podać nazwę klejnotu w wierszu poleceń:

bundle update gem-name

1
Dziwne. Tak bundle help updatemówi się zrobić. Której wersji pakietu używasz?
Brandan

40
bundle update gem-namezaktualizuje klejnot i „dowolną z jego zależności”.
yaka

5

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

Działa to również w przypadku zależności.


1
Czy istnieje sposób na zaktualizowanie go do określonej wersji? --major, --minor, I --patchflagi automatycznie uaktualnić go do najnowszej możliwej wersji.
user2490003

2

Używałem bundle update --sourcesiebie przez długi czas, ale są scenariusze, w których to nie działa. Na szczęście istnieje klejnot o nazwie, bundler-patchktóry ma na celu naprawienie tego niedociągnięcia.

Napisałem również krótki post na blogu o tym, jak używać bundler-patchi dlaczego bundle update --sourcenie działa konsekwentnie. Pamiętaj też, aby sprawdzić post przez chrismo, który szczegółowo wyjaśnia, co --sourcerobi ta opcja.


0

bundler update --source gem-name zaktualizuje skrót wersji w Gemfile.lock, który możesz porównać z ostatnim hasłem zatwierdzenia tej gałęzi git (domyślnie master).

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

można znaleźć na github.com/organization/repo-name/commits/c810f4a2(użyłem skrótu 8-znakowego zatwierdzenia dla adresu URL)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.