web-dev-qa-db-de.com

So installieren Sie einen Edelstein mit Bundler neu

Ich habe ein bundle show und erhalte den vollständigen Pfad zu einem Gem-Verzeichnis.

Leider habe ich das Verzeichnis mit rm -r gem_path. Dann funktioniert meine Rails App nicht mehr. Wenn ich versuche, den Server zu starten oder Rails Konsole zu starten, wird der folgende Fehler ausgegeben:

<class:Application>: nicht initialisierte Konstante MyAPP::Application::Gem (NameError)

Was soll ich tun, um es wieder zu haben?

Ich habe es versucht bundle install oder bundle update in der Hoffnung, das Bundle zu zwingen, den Edelstein zu durchsuchen und wieder zu installieren, aber es hat nicht funktioniert.

Ich habe auch versucht, das Gemfile.lock und Renn bundle install. Es hat sich nichts geändert, derselbe Fehler.

Der fragliche Edelstein ist Handeln Sie als taggable auf .

56
waldyr.ar

Zuerst habe ich einen gem q --L Erstellt, die Abkürzung für gem query --local. Es gibt mir alle lokal installierten Edelsteine ​​aus.

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)
...

Und dann habe ich den DVG-Rat befolgend den Edelstein unter Verwendung seines korrekten Namens gem uninstall acts-as-taggable-on Deinstalliert und bundle install Ausgeführt. Danach konnte ich ohne Probleme wieder Rails c Oder Rails s.

14
waldyr.ar

Wenn Sie rbenv verwenden, können Sie einen Edelstein wie rmagick vollständig deinstallieren und erneut installieren:

Erstens: Versuchen Sie eine einfache Deinstallation/Neuinstallation

gem uninstall rmagick
bundle install

Wenn das nicht funktioniert, können Sie alle Spuren des installierten Gems entfernen. Finden Sie den Installationsort Ihres Edelsteins:

bundle show rmagick
BUNDLE_DIR=$(dirname $(dirname $(bundle show rmagick)))
echo $BUNDLE_DIR

Ihr Gem-Installationspräfix ist entweder die Standardeinstellung, z. ~/.rbenv/versions/2.2.2/lib/Ruby/gems/2.2.0 oder etwas, das Sie z. .vendor

Bereinige das Gem-Verzeichnis:

rm -rf $BUNDLE_DIR/gems/rmagick-*

Leeren Sie den kompilierten Gem-Cache:

rm $BUNDLE_DIR/cache/rmagick*.gem

Leeren Sie auch den Spezifikations-Cache des Bundlers:

rm $BUNDLE_DIR/specifications/rmagick*gemspec

Dann können Sie neu installieren:

bundle install
53
werkshy

Sie können immer verwenden:

gem pristine acts-as-taggable-on

makellos - Stellt den ursprünglichen Zustand der installierten Edelsteine ​​aus den Dateien im Edelstein-Cache wieder her

Wenn Sie nur das Juwel für das aktuelle Projekt wiederherstellen möchten, sollten Sie Folgendes ausführen:

bundle exec gem pristine acts-as-taggable-on

38
Calin

Aus dem Projektverzeichnis im Terminal

gem uninstall gem_name 
11
Sazzad

Bei Verwendung von RVM mit Edelsteinen in ~/.rvm/, dies funktioniert, wenn bundle keinen Edelstein erneut installiert.

Löschen Sie zuerst die Edelsteinquelle:

bundle show $GEM
rm -rf $PATH_TO_GEM

Leeren Sie den kompilierten Gem-Cache:

rm -rf ~/.rvm/gems/Ruby-$RUBYVERSION[@$GEMSET]/cache/$GEM.gem

Leeren Sie auch den Spezifikations-Cache des Bundlers:

rm -rf ~/.rvm/gems/Ruby-$RUBYVERSION[@$GEMSET]/specifications/$GEM*gemspec

Dann können Sie neu installieren:

bundle install
9
JosephL

Wenn Sie in ./bundle/vendor Oder ähnlichem installiert haben, müssen Sie zuerst den Edelstein entfernen, aber das GEM_HOME explizit angeben, z.

GEM_HOME=./vendor/bundle/Ruby/2.3.0/ gem uninstall rmagick

Dies ist bei weitem die einfachste Möglichkeit, mit Bundler installierte Gems in einem Herstellerverzeichnis zu deinstallieren. Idealerweise gibt es einen Befehl bundle uninstall Oder bundle reinstall Usw.

Wenn Sie nur eine Neuinstallation durchführen möchten, hilft der folgende Befehl:

GEM_HOME=./vendor/bundle/Ruby/2.3.0/ gem uninstall rmagick && Sudo -u http bundle install

Wenn Sie wie ich über mehrere Webanwendungen in einem Verzeichnis verfügen (z. B. /srv/http), Geschieht dies in allen Verzeichnissen wie folgt:

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
5
ioquatix

bundle exec gem uninstall <gem_name> - Deinstalliert Gem aus dem Bundle (das <app_root>/vendor/bundle/Ruby/2.3.0/gems/ Pfad). Dies entspricht der Antwort von @ioquatix, ist jedoch die etwas bequemere Lösung, nach der er gesucht hat.

gem uninstall <gem_name> - Deinstalliert Gem nur von der globalen Gemset im System

4
Magne

Wenn Sie versuchen, Rake neu zu installieren, gem pristine rake wird fehlschlagen mit Skipped rake-10.X.X, it is a default gem und bundle installieren es ebenfalls nicht, da es nicht deinstalliert werden kann.

Wenn Sie rvm verwenden, scheint es am einfachsten zu sein, einfach ein rvm reinstall 2.x.x. Zumindest für mich, rvm repair all hat auch nicht geholfen.

Das gleiche gilt wahrscheinlich auch für alle anderen Standard-Edelsteine. Ich werde sie hier nur auflisten, damit die verzweifelten Googler Hilfe finden:

  • bigdecimal
  • tropfen
  • io-console
  • json
  • minitest
  • psych
  • rechen
  • rbtree
  • rdoc
  • test-Einheit
3
MattW.