Aggiorna solo un gioiello con il bundler


233

Uso il bundler per gestire le dipendenze nella mia app rails e ho una gemma ospitata in un repository git incluso come segue:

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

Per aggiornare questa gemma, eseguo bundle updatema aggiorna anche tutte le gemme menzionate in Gemfile. Quindi qual è il comando per aggiornare solo una gemma specifica?

Risposte:


354

Qui puoi trovare una buona spiegazione sulla differenza tra

Aggiorna gem e dipendenze:

bundle update gem-name 

o

Aggiorna esclusivamente la gemma:

bundle update --source gem-name

insieme ad alcuni begli esempi di possibili effetti collaterali.

Aggiornare

Come dice la risposta di @ Tim, a partire dal Bundler 1.14 il modo ufficialmente supportato per farlo è con bundle update --conservative gem-name.


19
Fai attenzione, "aggiornare gemma e dipendenze" significa aggiornare le rotaie se è una dipendenza e probabilmente non lo desideri. --source aggiornerà solo la gemma specificata come parametro. Quindi è meglio nella maggior parte delle situazioni.
— 1.44mb

come specificare la versione?
— Oshan Wisumperuma,

1
@OshanWisumperuma Specifica la versione in Gemfile o possibilmente Gemfile.lock prima di eseguire questi comandi bundle
— Harry Wood

185

Il modo per farlo è eseguire il comando seguente:

bundle update --source gem-name

3
Questo è esattamente ciò di cui avevo bisogno, ho una gemma privata e ho solo bisogno di aggiornare la gemma stessa senza aggiornare le dipendenze dopo aver apportato alcune modifiche alla gemma privata.
— Sono un drago rana il

30

Sembra che con le versioni più recenti di bundler (> = 1.14) sia:

bundle update --conservative gem-name

nota: questo comando aggiornerà una gemma senza dipendenze da essa
— mmike

24

Devi semplicemente specificare il nome della gemma nella riga di comando:

bundle update gem-name

1
Strano. Questo è ciò che bundle help updatedice di fare. Quale versione del bundler stai usando?
— Brandan,

40
bundle update gem-nameaggiornerà la gemma e "qualsiasi delle sue dipendenze".
— yaka,

5

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

Questo funziona anche per le dipendenze.


1
C'è un modo per aggiornarlo a una versione specifica? Il --major, --minor, e --patchle bandiere aggiornamento automaticamente alla versione più recente possibile.
— user2490003

2

Mi sono usato bundle update --sourceda molto tempo ma ci sono scenari in cui non funziona. Fortunatamente, c'è una gemma chiamata bundler-patchche ha l'obiettivo di correggere questo difetto.

Ho anche scritto un breve post sul blog su come utilizzare bundler-patche perché bundle update --sourcenon funziona in modo coerente. Inoltre, assicurati di dare un'occhiata a un post di chrismo che spiega in dettaglio cosa fa l' --sourceopzione.


0

bundler update --source gem-name aggiornerà l'hash di revisione in Gemfile.lock che puoi confrontare con l'ultimo hash di commit di quel ramo git (master per impostazione predefinita).

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

può essere trovato su github.com/organization/repo-name/commits/c810f4a2(ho usato l'hash di commit di 8 caratteri per l'URL)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.