88 votes

nettoyage du paquet de rails

Après la mise à jour d'un paquet, certaines gemmes peuvent être obsolètes, car une version plus récente de cette gemme a été installée. Il n'y a pas de commande de ce type dans la section bundle exécutable, c'est-à-dire bundle clean . Comment se débarrasser de ces joyaux obsolètes ?

Il s'agit d'une tentative de réduire la taille du slug dans mon application rails.

133voto

David Waller Points 1207

Si vous utilisez Bundler 1.1 ou une version ultérieure, vous pouvez utiliser bundle clean comme vous l'aviez imaginé. Ceci est redondant si vous utilisez bundle install --path (Bundler gère l'emplacement que vous avez spécifié avec --path, et prend donc la responsabilité de supprimer les gemmes périmées), mais si vous avez utilisé Bundler pour installer les gemmes en tant que gemmes système, alors bundle clean --force supprimera toutes les gemmes système non requises par votre Gemfile. Avertissement évident : ne faites pas cela si vous avez d'autres applications qui dépendent de gemmes système qui ne sont pas dans votre Gemfile !

Pat Shaughnessy a une bonne description de bundle clean et d'autres nouveautés dans bundler 1.1 .

30 votes

Pour ceux qui utilisent rvm, notez que bundle clean --force ne touche pas vos gemmes globales, mais seulement celles de votre jeu de gemmes actuel. Donc bundle clean --force produit le même résultat que et est plus rapide que rvm gemset empty suivi par bundle install .

19 votes

AVERTISSEMENT : "Bundle clean --force" peut faire disparaître un grand nombre de gemmes si vous ne faites pas attention. Cela devrait être la première ligne de cette réponse... d'autant plus qu'il y a tant de votes. SOYEZ PRUDENT !

37voto

trushkevich Points 1001

Si vous utilisez RVM, vous pouvez utiliser rvm gemset empty pour le gemset actuel - cette commande supprimera toutes les gemmes installées dans le gemset actuel (le gemset lui-même restera en place). Ensuite, exécutez bundle install afin d'installer les versions actuelles des gemmes. Assurez-vous également que vous ne supprimez pas les gemmes générales telles que rake, bundler et ainsi de suite au cours de l'installation. rvm gemset empty (si c'est le cas, installez-les manuellement via gem install avant bundle install ).

23voto

Pan Thomakos Points 19946

Si vous utilisez RVM vous pouvez installer vos gemmes dans gemsets . De cette façon, lorsque vous voulez effectuer un nettoyage complet, vous pouvez simplement supprimer le gemset, qui à son tour supprime toutes les gemmes qui y sont installées. L'autre option est de simplement désinstaller les gemmes inutilisées et de relancer le programme bundle install commandement.

Étant donné que bundler est censé être un outil de gestion des versions de gemmes pour chaque projet, il ne fournit pas d'outil de gestion des versions. bundle clean commandement. Faire cela signifierait la possibilité de supprimer les gemmes associées à d'autres projets également, ce qui ne serait pas souhaitable. Cela signifie que bundler est probablement le mauvais outil à utiliser pour gérer votre répertoire de gemmes. Ma recommandation personnelle serait d'utiliser les gemsets RVM pour sandboxer vos gems dans certains projets ou versions de ruby.

41 votes

Il n'est pas nécessaire de supprimer le gemset, vous pouvez simplement taper 'rvm gemset empty gemset_name' et ensuite exécuter 'bundle install' à nouveau.

0 votes

Excellente explication. Savoir cela sur bundler aide. Merci.

9 votes

Bundle clean --force fera le travail

13voto

Tyler Brock Points 9769

Honnêtement, j’ai eu des problèmes avec les dépendances circulaires de l’emballeur et la meilleure façon de procéder est rm -rf .bundle . Epargnez-vous le mal de tête et utilisez simplement le marteau.

1 votes

J'ai dû faire cela pour qu'il arrête de m'embêter avec le "vous devez appeler bundle install avec --no-deployment". Merci

2 votes

Merci pour l'idée. Bien que pour moi, utiliser un plus gros marteau m'a aidé. rvm implode --force et ensuite réinstaller rvm

1voto

JJD Points 7539

En cherchant une réponse à cette même question, je suis tombée sur gem_unused .
Vous pouvez également lire cet article : http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
Le code source est disponible sur GitHub : https://github.com/apolzon/gem_unused

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X