Comment réinstaller un bijou à l'aide de bundler
J'ai fait un bundle show
et obtenir le chemin d'accès complet à un joyau du répertoire.
Malheureusement, j'ai supprimé le répertoire à l'aide de rm -r gem_path
. Puis mon application rails ne fonctionne plus. Si j'essaie de démarrer le serveur ou démarrer la console rails, il renvoie l'erreur suivante:
<class:Application>
: uninitialized constantMyAPP::Application::Gem
(NameError)
Que dois-je faire pour avoir de nouveau?
J'ai essayé bundle install
ou bundle update
dans l'espoir de forcer le bundle à la recherche de la gemme et l'installer à l'arrière, mais ne fonctionne pas.
J'ai aussi essayé de supprimer le Gemfile.lock
et exécuter bundle install
. Rien n'a changé, même erreur.
Le joyau en question est Agir comme tagable sur.
- Si vous supprimez Gemfile.verrouillage et d'exécuter la commande bundle install de nouveau, ce qui se passe?
- Vous ne devriez pas le faire. Le fichier de verrouillage ne spécifie quelles sont les versions doit être installé, et ne rien avoir à faire avec si ou pas une gemme est installé.
- Tant pis, on dirait qu'il a déjà essayé.
- J'ai essayé après votre post. Désolé, Andrew Marshall, ce n'est pas que rapide 🙁
- Si vous
gem uninstall acts_as_taggable_on
, puis exécutezbundle install
de nouveau?
Vous devez vous connecter pour publier un commentaire.
Si l'aide de rbenv, cela vous permettra de complètement désinstaller et re-installer un bijou comme rmagick:
D'abord: Essayer un simple désinstaller/réinstaller
Si cela ne fonctionne pas, vous pouvez supprimer toutes les traces de l'installation de gem. Trouvez votre bijou emplacement d'installation:
Votre bijou préfixe d'installation sera la valeur par défaut par exemple
~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0
ou quelque chose que vous définissez par exemple.vendor
Effacer le joyau du répertoire:
Effacer la compilation des gem cache:
Également effacer bundler signalétique du cache:
Ensuite, vous pouvez ré-installer:
vendor/bundle/ruby/2.0.0/extensions/x86_64-linux/2.0.0/charlock_holmes-0.6.9.4/
vendor/
maisshared/bundle/ruby
etc.Vous pouvez toujours utiliser:
gem pristine acts-as-taggable-on
vierges, qui Restaure installé pierres précieuses à l'état primitif à partir de fichiers situé dans le joyau de cache
Si vous voulez juste pour restaurer le gem pour le projet en cours, vous devez exécuter:
bundle exec gem pristine acts-as-taggable-on
EDITOR=vim bundle open my-gem
J'ai d'abord fait un
gem q --L
, le raccourci pourgem query --local
. Il sort de moi tous les locaux gemmes installé.Et puis, à la suite DVG conseils, j'ai désinstallé le bijou à l'aide de son nom correct
gem uninstall acts-as-taggable-on
et a courubundle install
. Après que j'ai été capable derails c
ourails s
à nouveau sans aucun problème.bundle
de commande et n'est n'est pas présent à tous dans la sortie degem q --L
. Il n'est répertorié parbundle list
, mais le strictgem
commande ne peut pas "voir", donc il ne peut pas désinstaller/réinstaller.gem uninstall gem-in-question
finitions w/o des erreurs (ou de toute sortie d'ailleurs), mais n'a aucun effet sur le contenu debundle list
et unbundle install
juste dit "Votre bundle est complet!". Que faire maintenant?bundle update
avant l'inscription, bien que je ne sais pas si il va le réparer.bundle exec gem uninstall the-gem-in-question
? Je sais quegem list
vous montre toutes les versions, maisbundle exec gem list
montrer ces gemmes spécifiques à l'ensemble.De répertoire du projet dans le terminal
bundle install
Si vous utilisez RVM avec des gemmes dans
~/.rvm/
, cela fonctionne sibundle
n'est pas ré-installation d'un bijou.Tout d'abord, supprimer la gemme source:
Effacer la compilation des gem cache:
Également effacer bundler signalétique du cache:
Ensuite, vous pouvez ré-installer:
Si vous avez installé dans
./bundle/vendor
ou similaire, vous avez besoin de retirer le bijou d'abord, mais de spécifier explicitement les GEM_HOME, par exempleC'est de loin le moyen le plus simple pour désinstaller des gemmes installé à l'aide de bundler dans un vendeur de répertoire. Idéalement, il y aurait une commande
bundle uninstall
oubundle reinstall
, etc.Si votre objectif est tout simplement de réinstaller, la commande suivante vous aidera à:
Si vous êtes comme moi et que vous avez plusieurs web-applications dans un répertoire (par exemple,
/srv/http
), la suivante est-il dans tous les répertoires:bundle uninstall <gemname>
équivalent de la commande que vous cherchez estbundle exec gem uninstall <gemname>
Acclamations stackoverflow.com/a/48094089/380607bundle exec gem uninstall <gem_name>
- désinstalle joyau de l'bundle (le<app_root>/vendor/bundle/ruby/2.3.0/gems/
chemin d'accès). 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èmeSi vous essayez de réinstaller le râteau,
gem pristine rake
échouera avecSkipped rake-10.X.X, it is a default gem
et le faisceau de ne pas l'installer, car il ne peut pas le désinstaller.Si vous utilisez rvm, il semble que le plus simple est de faire simplement une
rvm reinstall 2.x.x
. Au moins pour moi,rvm repair all
n'a pas aidé.Le même probablement tous les autres par défaut de pierres précieuses. Je vais vous les énumérer ici, de sorte que les désespérés googlers trouver de l'aide: