Comment réinstaller un gem en utilisant bundler
  j'ai fait un  bundle show  et j'ai obtenu le chemin complet vers un répertoire gem.  
  malheureusement, j'ai supprimé le répertoire en utilisant  rm -r gem_path  . Puis mon application rails ne fonctionne plus. Si j'essaie start server ou start rails console, il affiche l'erreur suivante:  
<class:Application>: constante non initialiséeMyAPP::Application::Gem(NameError)
Que dois-je faire pour la récupérer?
  j'ai essayé  bundle install ou bundle update  dans l'espoir de forcer le paquet pour rechercher la pierre précieuse et l'installer en arrière, mais n'a pas fonctionné.  
 j'ai aussi essayé de supprimer le Gemfile.lock et de lancer bundle install . Rien n'a changé, même erreur.  
Le joyau en question est Agir en tant que tagable sur .
8 réponses
si vous utilisez rbenv, cela vous permettra de désinstaller complètement et de réinstaller un gem tel que rmagick:
tout D'abord: essayer une simple désinstallation / réinstallation
gem uninstall rmagick
bundle install
si cela ne fonctionne pas, vous pouvez supprimer toute trace de la gemme installée. Trouver votre emplacement d'installation de gemme:
bundle show rmagick
BUNDLE_DIR=$(dirname $(dirname $(bundle show rmagick)))
echo $BUNDLE_DIR
  votre préfixe d'installation gem sera soit le préfixe par défaut par exemple  ~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0  ou quelque chose que vous définirez par exemple  .vendor   
supprimer le répertoire gem:
rm -rf $BUNDLE_DIR/gems/rmagick-*
effacer le cache gem compilé:
rm $BUNDLE_DIR/cache/rmagick*.gem
élimine également le cache de spécifications de bundler:
rm $BUNDLE_DIR/specifications/rmagick*gemspec
puis vous pouvez réinstaller:
bundle install
vous pouvez toujours utiliser:
  gem pristine acts-as-taggable-on   
immaculé-rétablit les gemmes installées à l'état immaculé à partir des fichiers situés dans la cache de gem
si vous voulez simplement restaurer la gemme pour le projet en cours, vous devez lancer:
  bundle exec gem pristine acts-as-taggable-on   
  j'ai d'Abord fait un  gem q --L  , le raccourci pour  gem query --local  . Il me sort tous les gemmes locales installés.  
actionmailer (3.2.8, 3.2.6, 3.2.1, 3.1.0)
actionpack (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activemodel (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activerecord (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activeresource (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activesupport (3.2.8, 3.2.6, 3.2.1, 3.1.0)
acts-as-taggable-on (2.3.3)
...
 et ensuite, suivant les conseils de DVG, j'ai désinstallé le gem en utilisant son nom correct gem uninstall  acts-as-taggable-on et j'ai couru bundle install . Après cela j'ai pu rails c ou rails s  encore une fois sans aucun problème.  
 si vous utilisez  RVM  avec des gemmes dans ~/.rvm/ , cela fonctionne si bundle  n'est pas la réinstallation d'une gemme.  
premièrement, supprimer la source gem:
bundle show $GEM
rm -rf $PATH_TO_GEM
effacer le cache gem compilé:
rm -rf ~/.rvm/gems/ruby-$RUBYVERSION[@$GEMSET]/cache/$GEM.gem
élimine également le cache de spécifications de bundler:
rm -rf ~/.rvm/gems/ruby-$RUBYVERSION[@$GEMSET]/specifications/$GEM*gemspec
puis vous pouvez réinstaller:
bundle install
de l'annuaire du projet dans le terminal
gem uninstall gem_name 
  si vous avez installé dans  ./bundle/vendor  ou similaire, vous devez supprimer le gem en premier mais spécifier explicitement le GEM_HOME, par exemple  
GEM_HOME=./vendor/bundle/ruby/2.3.0/ gem uninstall rmagick
  C'est de loin la manière la plus simple de désinstaller les gemmes installées en utilisant bundler dans un répertoire de fournisseurs. Idéalement, il y aurait une commande  bundle uninstall  ou  bundle reinstall  , etc.  
si votre but est simplement de réinstaller, la commande suivante vous aidera:
GEM_HOME=./vendor/bundle/ruby/2.3.0/ gem uninstall rmagick && sudo -u http bundle install
  si vous êtes comme moi et avez plusieurs applications web sous un répertoire (par exemple  /srv/http  ), ce qui suit le fait dans tous les répertoires:  
cd /srv/http
for d in ./*/ ; do (cd "$d" && sudo -u http GEM_HOME=./vendor/bundle/ruby/2.4.0/ gem uninstall --force rmagick && sudo -u http bundle install); done
 si vous essayez de réinstaller rake, gem pristine rake échouera avec Skipped rake-10.X.X, it is a default gem  et bundle ne l'installera pas non plus, parce qu'il ne peut pas le désinstaller.   
 si vous utilisez rvm, il semble que le plus facile était simplement de faire un rvm reinstall 2.x.x . Au moins pour moi,  rvm repair all  n'a pas aidé.  
il en va probablement de même pour tous les autres gemmes par défaut. Je vais juste les énumérer ici pour que les googleurs désespérés trouvent de l'aide:
- bigdecimal
- goutte
- io-console
- json
- minitest
- psy
- râteau
- rbtree
- rdoc
- unité d'essai
   bundle exec gem uninstall <gem_name>  - désinstaller gem du faisceau (le chemin  <app_root>/vendor/bundle/ruby/2.3.0/gems/ ). C'est l'équivalent de la réponse @ioquatix a donné, mais est légèrement plus commode solution qu'il cherchait.  
   gem uninstall <gem_name>  - désinstalle gem seulement à partir de la global sertie dans le système