アプリ開発中に、ローカル環境での動作確認のため「localhost:3000」を入力するも画面遷移せず、
不思議に思いターミナルを確認した所、サーバーが起動していませんでした。
色々試行錯誤の末に無事に解決できたので、備忘録として投稿します!
初投稿のため、読みずらかったり分かりにくいと思いますが、
徐々に改善するので温かい目で見て頂ければと思います🙇♂️
【前提】
ruby 2.6.5
rails 6.0.0
ターミナルで「rails s」と入力すると
=> Booting Puma
=> Rails 6.0.3.4 application starting in development
=> Run `rails server --help` for more startup options
A server is already running. Check /Users/・・・/tmp/pids/server.pid.
「A server is already running.」と表示。「もうサーバーが動いているよ」という
メッセージですが、他のターミナルでもサーバーを立ち上げていませんでした。。。
そんな時は以下2つを試してみましょう(これで解決する人も一定数いるようですが、私の場合はどちらも効果なし)。
①ターミナルを全て閉じて再起動
②server.pidファイルを削除
以下のパスにあるファイルを削除します。
[Railsプロジェクトフォルダ]\tmp\pids\server.pid
正常時は、サーバー終了と同時に削除されるようですが、エラー発生時は残ったままになっていました。
私の場合は上記を行い再度「rails s」を行うと、
「Address already in use」と表示が変わりました。「アドレス?がすでに使われているよ」という
メッセージなのですが、読み換えると「3000番ポートが既に使われているよ」ということのようでした。
ポート3000番を使用しているプロセスを確認するために「lsof -i:3000」と入力。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 33163 username 12u IPv4 0x8fc4708611018a6f 0t0 TCP localhost:hbci (LISTEN)
そこで、killコマンドを使い実行中のプロセスを削除します。
「kill -9 PID(この場合は33163)」
再度「lsof -i:3000」を実行し何も表示されなければOK。
この状態で「rails s」を実行すると
=> Booting Puma
=> Rails 6.0.3.4 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.6 (ruby 2.6.5-p114), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
成功です!
いきなりサーバーが立ち上がらないと焦ったり不安になりがちですが、
丁寧に状況を把握して地道に仮説・検証を繰り返しましょう!!