172 votes

Désinstaller les gemmes tout installé, sous OSX ?

Il y a des cas où je voudrais revenir et désinstaller toutes les installations précédentes de gem.

Par exemple, j’avais besoin d’aider un ami migrer leur machine de développement de rails pour utiliser RVM. Comme ils avaient précédemment utilisé l’échelle du système `` , il éprouvait beaucoup de maux de tête lorsque vous travaillez avec plusieurs projets. Essentiellement, il était l’enfant d’affiche pour un converti RVM.

Comment élégamment désinstaller toutes les gemmes sur son système OSX ?

417voto

crftr Points 2964

Le nouveau one-liner magique:

 for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
 

Maintenant, avec Ruby 2.0, il existe des gems par défaut protégés. Et pour le moment, il ne semble pas exister de requête prise en charge pour répertorier ces valeurs par défaut.

44voto

bswinnerton Points 798

Vous pouvez également créer un nouveau fichier Gemfile et utiliser l'exécution du bundler bundle clean --force . Cela supprimera tous les autres joyaux qui ne sont pas inclus dans le Gemfile.

27voto

Thiago Ganzarolli Points 738

Une version légèrement différente, sautant l'étape de coupe, tirant parti de l'option '--no-version':

 gem list --no-version |xargs gem uninstall -ax
 

Puisque vous supprimez tout, je ne vois pas la nécessité de l'option «I». Chaque fois que la gemme est enlevée, ça va.

9voto

Ando Points 407

Utiliser soit

 $ gem list --no-version | xargs gem uninstall -ax
 

ou

 $ sudo gem list --no-version | xargs sudo gem uninstall -ax
 

Selon ce que vous voulez, vous devrez peut-être exécuter les deux, car "gem list" et "sudo gem list" fournissent des listes indépendantes.

Ne mélangez pas une "liste de gemmes" normale avec une "désinstallation de gem" sudo-ed, ou l'inverse, sinon vous risquez de désinstaller les gems installés par sudo (ou les anciennes).

5voto

Haris Krajina Points 3051

Si vous aimez le faire en utilisant Ruby:

 ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"
 

À votre santé

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