Bundler wird aus dem Stammverzeichnis Ihrer App gestartet, um sicherzustellen, dass alle erforderlichen Edelsteine vorhanden sind, damit Ihre App funktioniert. Wenn Sie aus irgendeinem Grund keinen Edelstein mehr benötigen, müssen Sie den ausführen
gem uninstall gem_name
Wie oben angegeben. Jedes Mal, wenn Sie den Bundler ausführen, werden die Abhängigkeiten erneut überprüft
EDIT - 24.12.2014
Ich sehe, dass die Leute immer wieder auf diese Frage kommen. Ich habe beschlossen, etwas hinzuzufügen. Die Antwort, die ich gab, war für den Fall, dass Sie Ihre Edelsteine global pflegen. Verwenden Sie einen Edelstein-Manager wie rbenv oder rvm, um Edelsteinsätze für bestimmte Projekte zu verwenden.
Dies bedeutet, dass auf globaler Ebene keine Gems installiert werden. Wenn Sie also eines aus der Gemfile Ihres Projekts entfernen und das Bundle erneut ausführen, wird es offensichtlich nicht in Ihr Projekt geladen. Dann können Sie Bundle Clean (mit dem Projektverzeichnis) ausführen und alle Edelsteine, die einmal aus Ihrer Gemfile (im selben Verzeichnis) installiert wurden, aber zu diesem Zeitpunkt dort nicht mehr aufgeführt sind, aus dem System entfernen. lange Rede kurzer Sinn - es entfernt unbenutzte Edelsteine.
gem uninstall pg
aus dem Projektordner ausführen, wird pg von Ihrem Gemset auf globaler / Systemebene anstelle des Bundlers deinstalliertERROR: While executing gem ... (NoMethodError) undefined method `delete' for #<Bundler::SpecSet:0x00000101142268>
Mit neueren Versionen von Bundler können Sie die Bereinigungsaufgabe verwenden:
bearbeiten:
Dies wird nicht empfohlen, wenn Sie ein globales Gemset verwenden (dh alle Ihre Projekte behalten ihre Gems am selben Ort). Es gibt jedoch nur wenige Möglichkeiten, die Edelsteine jedes Projekts getrennt zu halten:
rvm
gemsets ( http://rvm.io/gemsets/basics )bundle install
mit einer der folgenden Optionen:--deployment
oder--path=<path>
( http://bundler.io/v1.3/man/bundle-install.1.html )quelle
bundle clean --force
Entfernen wurden einige Edelsteine entfernt, die ich in meinem aktuellen Projekt nicht verwende, aber in meinen anderen Projekten verwende. Sollte ich einen Weg setzen? Nurbundle clean
gibt „nur Bündel sauber verwenden können , wenn --path gesetzt oder --force gesetzt“. Die--path
Option wird jedoch nicht einmal in der Hilfe angezeigt.clean
Aufgabe ist nicht wirklich sinnvoll, wenn Sie ein globales Gemset verwenden. Wenn Sie möchten, kann jedes Ihrer Projekte seine eigenen Juwelen haben. Sie können dies entweder über rvm gemsets ( rvm.io/gemsets/basics ) oder durch Angabe des Edelsteinpfads über die--path
Optionbundle install
( bundler.io/v1.3/man/bundle-install.1.html )Sie müssen 'gem uninstall gem_name' verwenden, um einen Gem zu deinstallieren.
Beachten Sie, dass Sie bei der systemweiten Installation des Gems (dh der Installation des Sudo-Bundles) möglicherweise das Binärverzeichnis mit der Option -n angeben müssen, um sicherzustellen, dass die zum Gem gehörenden Binärdateien entfernt werden. Beispielsweise
quelle
Ich schien dies zu lösen, indem ich das Einhorn-Gem manuell über den Bundler ("sudo bundler exec gem uninstall unicorn") entfernte und dann neu bündelte ("sudo bundle install").
Ich bin mir nicht sicher, warum es passiert ist, obwohl das obige Update zu funktionieren scheint.
quelle
Wenn Sie alle Ihre Edelsteine aufräumen und von vorne beginnen möchten
quelle
Bundler hat jetzt einen
bundle remove GEM_NAME
Befehl (seit v1.17.0, 25. Oktober 2018 ).quelle