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.