Die Ruby on Rails-Konsole hängt beim Laden

146

Aus irgendeinem Grund weigert sich die Ruby on Rails-Konsole, zu starten. es hängt nur. Ich habe keine Änderungen an meinem Code vorgenommen, und andere Projekte, die dieselbe Version von Ruby und Ruby on Rails verwenden, haben keine Probleme. Wenn ich endlich Ctrl+ Cbekomme, bekomme ich diesen Stack-Trace, der auf Spring zeigt.

Ich kann nicht erklären, warum dies von einem Moment zum nächsten passiert, wo es gut funktioniert hat. Ich habe alle Edelsteine ​​über RVM entfernt und alle über den Bundle-Befehl neu installiert, aber immer noch kein Glück. Irgendwelche Ideen wären willkommen.

Auch der Ruby on Rails-Server hat, soweit ich das beurteilen kann, kein Problem. Das Problem ist projektbezogen, es hat sich jedoch kein Code geändert, und nur die Ruby on Rails-Konsole hat das Problem.

Ruby 2.1.2
Rails 4.1.4

user_a@ubuntu:~/work/app_a$ rails console
^C/home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `gets': Interrupt
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `verify_server_version'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:25:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
    from /home/user_a/work/app_a/bin/spring:16:in `require'
    from /home/user_a/work/app_a/bin/spring:16:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

user_a@ubuntu:~/work/app_a$
Theog
quelle

Antworten:

415

Durch einen Neustart von Spring sollten die hängenden Befehle behoben werden:

$ bin/spring stop

Nach dem Löschen und Neuerstellen einer neuen Ruby on Rails-Anwendung wurden Hängebefehle (Rake, Bin / Rails usw.) ausgeführt. Google war nicht so hilfreich. Ich hoffe das ist.

Der Frühling startet automatisch, wenn Sie Ihren Befehl erneut ausführen.

Cee-Dub
quelle
Dies funktionierte bei mir mit Rails 4.1.1. Ich muss mich über Spring Gem informieren, um zu sehen, was es tut.
Jetimms
1
@ cee-dub aber was ist der Grund dahinter, warum lässt der Frühling es nicht laufen Schienen Konsole?
Kamal
3
Das hat bei mir nicht funktioniert. Ich habe immer noch Probleme, nachdem ich den Frühling gestoppt habe.
Donato
3
bin/spring stopIch bin gerade auf dieses Problem gestoßen: Als ich lief , erhielt ich die Antwort. Spring is not running.Also lief ich ps aux | grep spring, sah 5 Federprozesse laufen und tötete sie manuell, wodurch das Problem behoben wurde.
Ian Taylor
Tolle! Hätte das nie gedacht.
Rambatino
7

Es ist etwas falsch mit der Spring Gem Version, denke ich.

Gehen Sie zu Ihrer Gemfile und kommentieren Sie Gem 'Frühling'. Dann laufen bundle installund erneut versuchen.

# gem 'spring'

Und dann:

bundle install

Wenn Ihre Arbeit vom Edelstein abhängt, versuchen Sie, die Edelsteine ​​zu aktualisieren, indem Sie:

bundle update
Eki Eqbal
quelle
Dies löste es auch für mich unter Linux Mint mit Rails 4.1.4
Slhck
3
sei vorsichtig mit bundle update. Wenn Sie dies auf diese Weise tun, haben Sie die Möglichkeit, Ihre Edelsteinversionen in der gesamten Umgebung radikal zu ändern. Dies kann viele Nebenwirkungen hervorrufen, die Sie nicht möchten. Sie können auch tun bundle update spring, um nur das eine Juwel zu aktualisieren
Jaydel
@jaydel Sie sollten Ihre Versionen immer in Ihre Gem-Datei einfügen, einschließlich der Pfadversion. Bundler aktualisiert automatisch kleinere Versionen, jedoch keine größeren Versionen. Sie können jedoch jederzeit auf die ursprünglich angegebene Version zurücksetzen (von der Sie wissen, dass Ihre App funktioniert).
Ben Aubin
bezüglich des Einfügens von Versionen in Ihr Gemfile - vereinbart. Ich wusste nichts über die Einschränkung beim Aktualisieren auf Hauptversionen, aber es macht Sinn, wenn ich es mir
überlege
3

Wenn $ bin/spring stopsich das Problem nicht beheben lässt, stellen Sie sicher, dass noch kein verwaister Frühlingsprozess vorliegt:

$ ps aux | grep -i spring

Wenn Sie so etwas sehen

user  7163  0.0  0.0 110356  2165 pts/3    S+   19:40   0:00 grep --color=auto -i spring
user 16980  0.0  0.4 398826 17580 ?        Sl   Aug31   0:00 spring server | current | started 277 hours ago     

Beenden Sie dann den fehlerhaften Federprozess und versuchen Sie erneut, die Konsole zu starten:

$ kill -9 16980 
$ rails c
Kleinwald
quelle
1

Wenn der Verdacht besteht, dass Spring die Ursache für Verrücktheit ist, versuchen Sie, diesen Befehl auszuführen:

spring stop && spring start
Yurii Halapup
quelle