rails コマンドがフリーズしたら spring stop を実行しよう【初心者向け】

Ruby on Rails

rails コマンドを入力したら何も応答しなくなりました…

このような問題を解決します。

この問題は Rails5や Rails6 でもしばしば発生します。

本記事では「rails コマンドがフリーズしてなにもできなくなった」という方のために解説していきます。

rails コマンドがフリーズする状況

rails での開発中によく使う

rails s

rails db:migrate

といったコマンドをいつものように実行していたら、ターミナルが何も応答しなくなるという状況です。

結論: spring stop を実行しましょう

こういうときは

spring stop

というコマンドを実行しましょう。

rails コマンドがフリーズ時は ctrl-c によるコマンドの停止も効かなくなっていることがあります。

そのような場合は、別のターミナルを立ち上げてそちらで spring stop コマンドを実行しましょう。

ただし、bundler でプロジェクトフォルダにインストールしている場合は

bundle exec spring stop

の場合もあります。

手元のプロジェクトの状況にあわせて使い分けてください。

spring って何?

spring は Ruby on Rails の preloader(プリローダ)と呼ばれるコマンドです。

プリ(前もって) + ロード(読み込む)ということをします。

何を読み込むかというと、プロジェクト内のプログラムコードです。

spring はプロジェクトのプログラムコードを読み込んでバックグラウンドで起動しておくことで、rails コマンドの高速化をはかるためのソフトウェアです。

これによって開発時に頻繁に実行する rails コマンドが短時間で実行できるようになり、開発効率が向上します。

spring のせいで rails コマンドがフリーズすることも

spring がおかしくなるとrails コマンドが何も応答しなくなります。

よくある場面としては

  • プロジェクトを作り直す
  • git などのバージョン管理でかなり昔のコードに戻す

など、プロジェクト内の多くのファイルが変わるときに発生しやすいです。

そのような場合は落ち着いて spring stop コマンドを実行しましょう。

まとめ

プログラミング初学者にとって rails コマンドがフリーズすると何をして良いのか分からなくなります。

エラーメッセージを出してくれればそこを起点に調べることはできます。

しかしフリーズしてしまうとエラーメッセージすら表示されないためです。

その他の原因の可能性もありますが、経験上 Rails 初心者がおこしがちなトラブルのトップクラスに入ります。

まず spring がおかしくなっている可能性を考慮して spring stop コマンドを実行してみてください。

タイトルとURLをコピーしました