2017-04-04 6 views
0

Ich habe eine Anwendung, die remote ausgeführt wird, und ich habe gerade rails auf Version 4.2.8 aktualisiert, die auch andere Edelsteine ​​aktualisiert hat. Ich lief service unicorn restart danach, aber das Protokoll für Einhorn gibt mir diese Fehlermeldung:Sie haben bereits Unicorn 5.2.0 aktiviert, aber Ihr Gemfile benötigt Einhorn 5.3.0

You have already activated unicorn 5.2.0, but your Gemfile requires unicorn 5.3.0. Prepending bundle exec to your command may solve this. (Gem::LoadError)

ich gem uninstall unicorn -v 5.2.0 versucht haben, die erfolgreich zurückgekehrt, und dann gem install -v 5.3.0, die auch erfolgreich zurückgegeben. Danach habe ich service unicorn restart ausgeführt, aber der Fehler bleibt bestehen.

Ich bemerkte die bundle exec Vorschlag, aber ich bin mir nicht sicher, was ich diesen Befehl vorstellen sollte.

Antwort

1

Versuchen Sie, Ihre Datei gemfile.lock zu löschen, und führen Sie dann die Installation des Bundles erneut aus. Dadurch wird die Datei von Grund auf neu erstellt, wodurch normalerweise meine Edelsteinkonflikte behoben werden.

+0

Hey, danke, das hat funktioniert. Jetzt bekomme ich das, wenn ich versuche, ein Einhorn zu starten: 'Master konnte nicht gestartet werden, überprüfen Sie stderr Log für Details'. Ich kann "unicorn.stderr.log" nicht finden, nicht die Konfigurationsdatei "unicorn.rb" (nur die Edelsteine ​​erscheinen). Ich denke, dass die meisten meiner Probleme von dort stammen. Haben Sie Vorschläge für diesen Fall? – Tuma

+1

Ich habe noch nie Einhorn verwendet :(Wenn Sie 'Bundle Show Einhorn' eingeben, sollte es zeigen, wo alle Dateien zu diesem Edelstein gespeichert sind, aber anders kann ich leider nicht helfen – Mark

+0

Ich würde nicht löschen und neu erstellen gemfile.lock Das ist eher ein Problem als sein Wert. – Tyler

0

Das bedeutet, dass die auf Ihrem Computer ausgeführte Unicorn-Version von der in Ihrer Anwendung angegebenen Version abweicht. service unicorn deutet wahrscheinlich darauf hin, dass Unicorn auf dem Server/Computer installiert ist und nicht auf Ihre App-Version von Unicorn verweist, richtig? Wenn Ihre Anwendung gestartet wird, versucht Ihre App, eine andere Version des Edelsteins zu laden.

Sie können Einhorn auch im Kontext Ihrer App ausführen, wie bundle exec unicorn - How to start rails server in production mode using unicorn and config file?.

0

Wenn Sie eine Lösung gefunden haben, gut. Wenn nicht, das nächste Mal, erstellen Sie eine neue Rails App mit einem einzigartigen Edelstein wie [email protected] Auf diese Weise vermeiden Sie bei der Bereitstellung auf einem Remote-Server diese Art von Gems-Konflikten.

0

Dies kann dadurch verursacht werden, dass Sie zwei verschiedene Quellen für Edelsteine ​​auf Ihrem Computer haben.

Wenn Sie etwas wie RVM mit Edelsteinen verwenden, stellen Sie sicher, dass Sie das richtige Edelsteinset verwenden. Achten Sie besonders darauf, dass Ihre gem install und gem uninstall auf den anwendungsspezifischen Edelsteinsatz und nicht auf die systemweiten Edelsteine ​​einwirken. Details finden Sie unter https://rvm.io/gemsets.

Bundler generiert auch einen separaten Edelsteinsatz pro Anwendung. Wenn Sie also Bundler verwenden, müssen Sie alle Ihre Befehle ausführen, indem Sie sie mit bundle exec (z. B. bundle exec rspec spec) voranstellen. Wenn du Edelsteine ​​aus dem Bündel entfernen möchtest, entferne sie aus deiner Gemdatei und starte danach bundle update gem_in_question (dies wird auch deine Gemfile.lock aktualisieren). Sie können mehr bei http://bundler.io/v1.14/guides/using_bundler_in_application.html#executing-commands---bundle-exec finden.

Ich hoffe, dass dies hilft, Ihr Problem zu lösen.

Verwandte Themen