QA@IT

railsでmysqlを使用した際、rails ~コマンドでフリーズする。

7219 PV

最近railsを始めた初心者です。

rails new ~ -d mysqlとした後に、rails g model ~とするとフリーズしてしまいます。macのlocalhostで実行しました。
Ctl + Cで中断すると以下の様になったので、Gemfileのspringの部分をコメントアウトしたのですが、どうも上手くいきません。
どのようにすれば解決できるでしょうか?どなたかよろしくお願いします。

/Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `gets': Interrupt
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `verify_server_version'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client/run.rb:25:in `call'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/~/.rbenv/versions/2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/~/Works/railstest/bin/spring:16:in `<top (required)>'
from bin/rails:3:in `load'
from bin/rails:3:in `<main>'

回答

似たような症状と解決策をこちらで見つけました。

ruby on rails console hanging when loading - Stack Overflow http://stackoverflow.com/questions/25027284/ruby-on-rails-console-hanging-when-loading

$ bin/spring stop

で一旦 spring を停止させるとなおるかもしれません。

編集 履歴 (0)
  • ありがとうございます。
    その方法で解決できました。

    $ rails new ~ -d mysql --skip-unit-test

    で新規プロジェクトを作成しても解決することができたのですが、

    $ bin/spring stop

    で解決するのと何が違うのでしょうか??
    それと、このエラーは何が原因で起こっているのでしょうか??
    何度もすいません。
    -
  • 詳しい原因はわかりませんが、springはメモリ上にRailsの環境を読み込んでおくことで各種コマンドを高速に実行する機能ですので、テストをSkipすることで正常動作するなら何らかのタイミングでロードしてるRailsのテスト環境のキャッシュにエラーが発生するのだと思います。 -
  • ですので、`bin/spring stop`するのはspringを再起動してキャッシュの再構築をしての解決、テストをSkipするのはそもそも使わないので問題が発生しないという状態だと考えられます。 -
  • なるほどです!
    丁寧に教えて頂いてとても助かりました。
    本当にありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。