103 votes

Quel est le meilleur moyen de désinstaller des gemmes à partir d'un rails3 projet?

J'ai installé tous mes gemmes en utilisant bundler via le Gemfile. J'ai pensé (à tort) que si j'ai supprimé un joyau de mon Gemfile et a couru 'bundle install' qu'une fois effacées, les gemmes serait désinstallé. J'ai regardé le bundler fichier d'aide et, autant que je peux dire, il ne dispose pas d'un moyen de désinstaller des pierres précieuses.

Dois-je simplement utiliser le gem désinstaller x pour tout? Est-ce que ça va confondre bundler?

137voto

Daniel Points 1171

Bundler est lancé à partir de votre application répertoire racine de sorte qu'il s'assure que toutes les gemmes nécessaires sont présents pour obtenir votre app de travail.Si pour quelque raison vous n'avez plus besoin d'un bijou que vous aurez à exécuter le

    gem uninstall gem_name 

comme vous l'avez indiqué ci-dessus.Donc, chaque fois que vous exécutez bundler il va revérifier les dépendances

99voto

phatmann Points 4153

Vous désinstallez un bijou installé par bundler:

bundle exec gem uninstall GEM_NAME

Notez que ce lève

ERROR: While executing gem ... (NoMethodError) undefined method `delete' for #<Bundler::SpecSet:0x00000101142268>

mais le bijou est réellement supprimé. La prochaine fois que vous exécutez bundle install le gem sera réinstallé.

22voto

Evgenia Manolova Points 441

Avec les nouvelles versions de bundler vous pouvez utiliser le propre de la tâche:

$ bundle help clean
Usage:
    bundle clean

Options:
    [--dry-run=only print out changes, do not actually clean gems]
    [--force=forces clean even if --path is not set]
    [--no-color=Disable colorization in output]
    -V, [--verbose=Enable verbose output mode]

Cleans up unused gems in your bundler directory
$ bundle clean --dry-run --force
Would have removed actionmailer (3.1.12)
Would have removed actionmailer (3.2.0.rc2)
Would have removed actionpack (3.1.12)
Would have removed actionpack (3.2.0.rc2)
Would have removed activemodel (3.1.12)
...

edit:

Ce n'est pas recommandé si vous utilisez un mondial sertie (c'est à dire - tous vos projets de garder leurs pierres dans le même endroit). Il y a quelques façons de garder chaque projet gemmes distinct, mais:

  1. rvm gemsets (http://rvm.io/gemsets/basics)
  2. bundle install avec l'une des options suivantes: --deployment ou --path=<path> (http://bundler.io/v1.3/man/bundle-install.1.html)

1voto

Declan McGrath Points 717

Vous devez utiliser "gem désinstaller gem_name' désinstaller un bijou.

Notez que si vous avez installé le gem à l'échelle du système (ie. sudo bundle install), alors vous pouvez avoir besoin de spécifier le répertoire binaire à l'aide de l'option-n, pour assurer binaires appartenant à la gem sont supprimés. Par exemple

sudo gem uninstall gem_name  -n /usr/lib/ruby/gems/1.9.1/bin

1voto

Aaron Marks Points 105

Il me semblait résoudre ce problème en supprimant manuellement la licorne gem via bundler ("sudo bundler exec gem désinstaller la licorne"), puis rebundling ("sudo bundle install").

Je ne sais pas pourquoi c'est arrivé si, bien que le correctif ci-dessus ne semble pas fonctionner.

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