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?

marynarz
źródło

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.

mseebacher
źródło
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
dukz
źródło
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
Tim
źródło
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
Brandan
źródło
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.

Linus
źródło
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.

Kitto
źródło
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: [email protected]: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)

shushugah
źródło