Wenn Sie Bundler 1.1 oder höher verwenden, können Sie es so verwenden bundle clean
, wie Sie es sich vorgestellt haben. Dies ist redundant, wenn Sie verwenden bundle install --path
(Bundler verwaltet den mit --path angegebenen Speicherort, übernimmt also die Verantwortung für das Entfernen veralteter Edelsteine). Wenn Sie jedoch Bundler zum Installieren der Edelsteine als Systemedelsteine verwendet haben, werden alle Systemedelsteine bundle clean --force
nicht gelöscht von Ihrem Gemfile benötigt. Blendend offensichtliche Einschränkung: Tun Sie dies nicht, wenn Sie andere Apps haben, die auf Systemedelsteinen basieren, die nicht in Ihrer Gemfile enthalten sind!
Pat Shaughnessy hat eine gute Beschreibung bundle clean
und andere neue Ergänzungen in Bundler 1.1 .
bundle clean --force
Ihre globalen Edelsteine nicht berührt werden, sondern nur die in Ihrem aktuellen Gemset. Sobundle clean --force
erzeugt das gleiche Ergebnis wie und schneller dannrvm gemset empty
anschließendbundle install
.Wenn Sie RVM verwenden, können Sie es
rvm gemset empty
für das aktuelle Gemset verwenden. Mit diesem Befehl werden alle im aktuellen Gemset installierten Gems entfernt (Gemset selbst bleibt an Ort und Stelle). Führen Sie dannbundle install
aus, um aktuelle Versionen von Edelsteinen zu installieren. Stellen Sie außerdem sicher, dass Sie keine allgemeinen Edelsteine wie Rake, Bundler usw. während löschenrvm gemset empty
(wenn dies der Fall ist, installieren Sie sie manuell übergem install
vorbundle install
).quelle
Wenn Sie RVM verwenden, können Sie Ihre Edelsteine in Edelsteinsätzen installieren . Auf diese Weise können Sie, wenn Sie eine vollständige Bereinigung durchführen möchten, einfach das Gemset entfernen, wodurch alle darin installierten Gems entfernt werden. Sie können auch einfach Ihre nicht verwendeten Edelsteine deinstallieren und Ihren
bundle install
Befehl erneut ausführen .Da der Bundler als Projekt-pro-Projekt-Gem-Versionierungstool gedacht ist, bietet er keinen
bundle clean
Befehl. Dies würde die Möglichkeit bedeuten, Edelsteine zu entfernen, die auch mit anderen Projekten verbunden sind, was nicht wünschenswert wäre. Das bedeutet, dass Bundler wahrscheinlich das falsche Tool ist, um Ihr Gem-Verzeichnis zu verwalten. Meine persönliche Empfehlung wäre, RVM-Edelsteine zu verwenden, um Ihre Edelsteine in bestimmten Projekten oder Ruby-Versionen zu sandboxen.quelle
Ehrlich gesagt hatte ich Probleme mit zirkularen Abhängigkeiten von Bündlern und der beste Weg ist
rm -rf .bundle
. Sparen Sie sich die Kopfschmerzen und benutzen Sie einfach den Hammer.quelle
rvm implode --force
und dann rvm neu installierenIch nehme an, Sie installieren Edelsteine in
vendor/bundle
? Wenn ja, warum nicht einfach alle Edelsteine löschen und eine Reinigung durchführenbundle install
?quelle
Bei der Suche nach einer Antwort auf dieselbe Frage bin ich auf gem_unused gestoßen .
Vielleicht möchten Sie auch diesen Artikel lesen: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
Der Quellcode ist auf GitHub verfügbar: https://github.com/ apolzon / gem_unused
quelle
Entferne einfach die veralteten Edelsteine aus deiner Gemfile. Wenn Sie über Heroku sprechen (das haben Sie nicht erwähnt), wird der Slug bei jeder neuen Version kompiliert, wobei nur der aktuelle Inhalt dieser Datei verwendet wird.
quelle
Einfach ausführen, um veraltete Edelsteine zu entfernen und Druckwarnungen nach dem Bündeln zu entfernen.
quelle