Mettre à jour un seul bijou avec bundler

233

J'utilise bundler pour gérer les dépendances dans mon application rails, et j'ai un joyau hébergé dans un référentiel git inclus comme suit:

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

Pour mettre à jour ce joyau, je l'exécute bundle updatemais il met également à jour tous les joyaux mentionnés dans Gemfile. Alors, quelle est la commande pour mettre à jour un seul bijou spécifique?

marin
la source

Réponses:

354

Ici vous pouvez trouver une bonne explication sur la différence entre

Mettez à jour la gemme et les dépendances:

bundle update gem-name 

ou

Mettre à jour exclusivement la gemme:

bundle update --source gem-name

ainsi que de beaux exemples d'effets secondaires possibles.

Mettre à jour

Comme le dit la réponse de @ Tim, à partir de Bundler 1.14, la méthode officiellement prise en charge est la suivante bundle update --conservative gem-name.

mseebacher
la source
19
Soyez prudent, «mettre à jour la gemme et les dépendances» signifie mettre à jour les rails lui-même s'il s'agit d'une dépendance et que vous ne le voulez probablement pas. --source ne mettra à jour que la gemme spécifiée comme paramètre. C'est donc mieux dans la plupart des situations.
1,44 Mo
comment spécifier la version?
Oshan Wisumperuma
1
@OshanWisumperuma Spécifiez la version dans Gemfile ou éventuellement Gemfile.lock avant d'exécuter ces commandes de bundle
Harry Wood
185

Pour ce faire, exécutez la commande suivante:

bundle update --source gem-name
dukz
la source
3
C'est exactement ce dont j'avais besoin, j'ai un joyau privé et j'ai seulement besoin de mettre à jour le joyau lui-même sans mettre à jour les dépendances après avoir apporté quelques modifications au joyau privé.
Je suis un dragon grenouille
30

Il semble qu'avec les nouvelles versions de bundler (> = 1.14) c'est:

bundle update --conservative gem-name
Tim
la source
note: cette commande mettra à jour une gemme sans dépendances de celle
mmike
24

Il vous suffit de spécifier le nom de la gemme sur la ligne de commande:

bundle update gem-name
Brandan
la source
1
Étrange. Voilà ce qu'il bundle help updatefaut faire. Quelle version de bundler utilisez-vous?
Brandan
40
bundle update gem-namemettra à jour la gemme et "n'importe laquelle de ses dépendances".
yaka
5

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

Cela fonctionne également pour les dépendances.

Linus
la source
1
Existe-t-il un moyen de le mettre à jour vers une version spécifique? Le --major, --minor, et --patchdrapeaux met automatiquement à jour à la dernière version possible.
user2490003
2

Je me suis utilisé bundle update --sourcedepuis longtemps, mais il y a des scénarios où cela ne fonctionne pas. Heureusement, il y a un joyau appelé bundler-patchqui a pour but de corriger cette lacune.

J'ai également écrit un court article de blog sur la façon d'utiliser bundler-patchet pourquoi bundle update --sourcene fonctionne pas de manière cohérente. Assurez-vous également de consulter un article de chrismo qui explique en détail ce que fait l' --sourceoption.

Kitto
la source
0

bundler update --source gem-name mettra à jour le hachage de révision dans Gemfile.lock que vous pouvez comparer avec le dernier hachage de validation de cette branche git (maître par défaut).

GIT remote: [email protected]:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

peut être trouvé à github.com/organization/repo-name/commits/c810f4a2(J'ai utilisé un hachage de validation de 8 caractères pour l'URL)

shushugah
la source