Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

Rails5.2 EC2サーバーでRailsコンソールが起動しない

May 24, 2019

bin/rails sとかは動くのにコンソールが不動


[tatsuya@ip-10-0-0-238 my-project]$ bin/rails c

...ずっとこのままです。

control + c で止めると...

^C/var/www/rails/my-project/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:117:in `gets': Interrupt
from /var/www/rails/my-project/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:117:in `verify_server_version'
from /var/www/rails/my-project/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:62:in `run'
from /var/www/rails/my-project/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:42:in `warm_run'
...
...


調査と対応

調べてみるとspringというプロセスがrails consoleを走らせた時に走っているらしい。

springのプロセスが走っているか確認

[tatsuya@ip-10-0-0-238 my-project]$ bin/spring status
Spring is running:


10327 spring server | my-project | started 74 hours ago
11326 [ruby] <defunct>

何もしていないのにsprig のプロセスが起動しっぱなしだった。

原因を調べてみると、この my-projectに当たるプロジェクトを同名で、以前に何度か作っては壊し、作っては壊しを続けていた。
そのため、すでに壊した環境のrails consoleのプロセスがそのまま残ってしまっていたらしい... :sweat_smile:

解決法:springデーモンをkillする

[tatsuya@ip-10-0-0-238 my-project]$ ps axww | grep spring
XXXXX ?        Sl     0:00 spring server | froala-blog | started 74 hours ago
YYYYY pts/2    S+     0:00 grep --color=auto spring
[tatsuya@ip-10-0-0-238 froala-blog]$ kill -9 XXXXX


[tatsuya@ip-10-0-0-238 froala-blog]$ bin/rails c
Running via Spring preloader in process 17428
Loading development environment (Rails 5.2.3)
irb(main):001:0>

動いたー!!      


最後に: 同じ名前でプロジェクトを作ったり壊したりするときはプロセスが残っていないか確認しよう。