Aktualisieren Sie nur einen Edelstein mit Bundler

233

Ich verwende Bundler, um Abhängigkeiten in meiner Rails-App zu verwalten, und ich habe ein Juwel in einem Git-Repository gehostet, das wie folgt enthalten ist:

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

Um diesen Edelstein zu aktualisieren, bundle updateführe ich ihn aus, aber er aktualisiert auch alle in Gemfile erwähnten Edelsteine. Was ist also der Befehl, um nur einen bestimmten Edelstein zu aktualisieren?

Matrose
quelle

Antworten:

354

Hier finden Sie eine gute Erklärung für den Unterschied zwischen

Aktualisieren Sie sowohl Gem als auch Abhängigkeiten:

bundle update gem-name 

oder

Aktualisiere ausschließlich das Juwel:

bundle update --source gem-name

zusammen mit einigen schönen Beispielen für mögliche Nebenwirkungen.

Aktualisieren

Wie die Antwort von @ Tim sagt, ist ab Bundler 1.14 der offiziell unterstützte Weg dazu mit bundle update --conservative gem-name.

mseebacher
quelle
19
Seien Sie vorsichtig, "Aktualisieren von Edelsteinen und Abhängigkeiten" bedeutet, dass Rails selbst aktualisiert werden, wenn es sich um eine Abhängigkeit handelt und Sie dies wahrscheinlich nicht möchten. --source aktualisiert nur den als Parameter angegebenen Edelstein. So ist es in den meisten Situationen besser.
1,44 MB
Wie gebe ich die Version an?
Oshan Wisumperuma
1
@OshanWisumperuma Geben Sie die Version in Gemfile oder möglicherweise Gemfile.lock an, bevor Sie diese Bundle-Befehle ausführen
Harry Wood
185

Um dies zu tun, führen Sie den folgenden Befehl aus:

bundle update --source gem-name
dukz
quelle
3
Dies ist genau das, was ich brauchte. Ich habe einen privaten Edelstein und muss den Edelstein selbst nur aktualisieren, ohne die Abhängigkeiten zu aktualisieren, nachdem ich einige Änderungen am privaten Edelstein vorgenommen habe.
Ich bin ein
30

Es scheint, dass mit neueren Versionen von Bundler (> = 1.14) es ist:

bundle update --conservative gem-name
Tim
quelle
Hinweis: Dieser Befehl aktualisiert ein Juwel ohne Abhängigkeiten davon
mmike
24

Sie müssen lediglich den Edelsteinnamen in der Befehlszeile angeben:

bundle update gem-name
Brandan
quelle
1
Seltsam. Das bundle help updatesagt zu tun. Welche Bundler-Version verwenden Sie?
Brandan
40
bundle update gem-nameaktualisiert den Edelstein und "alle seine Abhängigkeiten".
Yaka
5

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

Dies funktioniert auch für Abhängigkeiten.

Linus
quelle
1
Gibt es eine Möglichkeit, es auf eine bestimmte Version zu aktualisieren? Das --major, --minorund --patchFahnen aktualisieren Sie sie automatisch auf die neueste Version möglich.
user2490003
2

Ich habe bundle update --sourcemich lange benutzt, aber es gibt Szenarien, in denen es nicht funktioniert. Zum Glück gibt es einen Edelstein namensbundler-patch der das Ziel hat, dieses Manko zu beheben.

Ich habe auch einen kurzen Blog-Beitrag darüber geschrieben, wie man es benutzt bundler-patchund warum bundle update --sourcees nicht konsequent funktioniert. Schauen Sie sich auch einen Beitrag von chrismo an, in dem ausführlich erklärt wird, was die --sourceOption bewirkt.

Kitto
quelle
0

bundler update --source gem-name aktualisiert den Revisions-Hash in Gemfile.lock, den Sie mit dem letzten Commit-Hash dieses Git-Zweigs vergleichen können (standardmäßig Master).

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

finden Sie unter github.com/organization/repo-name/commits/c810f4a2(Ich habe einen 8-stelligen Commit-Hash für die URL verwendet)

Shushugah
quelle