ロード時にRuby on Railsコンソールがハングする


146

なんらかの理由で、Ruby on Railsコンソールは起動を拒否します。ハングするだけです。私はコードに変更を加えていません。同じバージョンのRubyとRuby on Railsを使用する他のプロジェクトには問題はありません。最後にCtrl+ するとC、Springを指すこのスタックトレースが表示されます。

これがうまくいっていたある瞬間から次の瞬間に起こっている理由を説明することはできません。私はRVMを通じ​​てすべての宝石を一掃し、バンドルコマンドを通じてすべてを再インストールしましたが、まだ運がありません。任意のアイデアをいただければ幸いです。

また、Ruby on Railsサーバーには、私の知る限り問題はありません。問題はプロジェクトに関連していますが、コードは変更されていません。問題があるのはRuby on Railsコンソールだけです。

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$

回答:


415

Springを再起動すると、ハングしているコマンドが修正されます。

$ bin/spring stop

新しいRuby on Railsアプリケーションを削除して再作成した後、ハングコマンド(rake、bin / railsなど)が発生しました。Googleはそれほど役に立ちませんでした。これがいいです。

コマンドを再実行すると、Springが自動的に起動します。


これは私にとってRails 4.1.1でうまくいきました。Spring gemで何が行われているかを確認する必要があります。
jetimms 2014年

1
@ cee-dubしかし、その背後にある理由は何ですか、なぜSpringはRailsコンソールを実行させないのですか?
kamal

3
これは私にはうまくいきませんでした。春を止めた後もまだ問題が発生しています。
Donato

3
この問題が発生しました:実行bin/spring stopすると応答が返されたSpring is not running.ので、ps aux | grep spring実行し、5つの春のプロセスが実行されていることを確認し、手動で強制終了して、問題を修正しました。
イアンテイラー

すごい!それを推測したことはないでしょう。
ランバティーノ

7

それは私が推測する春の宝石バージョンでは何かが間違っています。

Gemfileに移動し、gem 'spring'にコメントします。次に、実行bundle installして再試行してください。

# gem 'spring'

その後:

bundle install

作業が宝石に依存している場合は、次の方法で宝石を更新してください。

bundle update

これは、レール4.1.4を備えたLinux Mintでも私にとってそれを解決しました
slhck 2014

3
気をつけてくださいbundle update。そうすることで、環境全体でgemのバージョンを根本的に変更することができます。これにより、望ましくない多くの副作用が発生する可能性があります。bundle update spring1つの宝石だけを更新することもできます
ジェイデル

@jaydelパスのバージョンを含め、常にバージョンをgemfileに配置する必要があります。Bundlerはマイナーバージョンを自動的に更新しますが、メジャーバージョンは更新しませんが、最初に指定したバージョン(アプリが動作することがわかっているバージョン)にいつでもロールバックできます。
Ben Aubin

あなたのGemfileにバージョンを入れることについて-同意しました。メジャーバージョンに更新する際の制限については知りませんでしたが、次の点を
考慮すると理にかなって

3

$ bin/spring stopそれでも問題が解決しない場合は、孤立したSpringプロセスがまだハングアップしていないことを確認してください。

$ ps aux | grep -i spring

のようなものを見たら

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     

次に、誤ったスプリングプロセスを強制終了し、コンソールをもう一度起動してみます。

$ kill -9 16980 
$ rails c

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.