mac 使い方

railsサーバーが起動しない。
rails s ができない現象の解決方法を5つまとめました。
こちらの方法で、rails sが正常に起動するようになります。

エラー画面がこんな感じです⬇️

❯ rails s
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
A server is already running. Check プロジェクト名/tmp/pids/server.pid.
Exiting

 

解決策1 サーバーの切り忘れ

開いてるターミナルを全部終了して、rails sでサーバー起動をする

基本的には、どこかのターミナルでrails sが動きっぱなし、サーバーが起動している状態がほとんどなので、
そう言った場合は1つずつ「コントロール+C」を押して、サーバー停止させるか、ターミナルを消してしまいましょう。

解決策2 lsof -wni tcp:3000

$ lsof -wni tcp:3000
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby    28295  user   21u  IPv4 0x77d8a30cabb79cc9      0t0  TCP 127.0.0.1:hbci (LISTEN)
ruby    28295  user   22u  IPv6 0x77d8a30cac93f9f9      0t0  TCP [::1]:hbci (LISTEN)

# 「COMMAND」に「ruby」と書いてある行のPIDをコピーして処理を停止(今回は28295)
$ kill -9 28295

$ rails s

基本的に、これを試せばなおります
僕はこれで治らなかった経験はありません笑

解決策3 ps aux | grep rails でプロセス削除

$ rails s
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
A server is already running. Check プロジェクト名/tmp/pids/server.pid.
Exiting

$ ps aux | grep rails
user   28321 s001  S+     0:00.00 grep rails

$ kill -9 28321

$ rails s
→ 解決

rails サーバーのプロセスを終了させる方法です。
実は、僕はこの方法で解決できたことがありません。
もしこの方法で直せた方や、原因が分かる方がいらっしゃればご教授願いますっ

解決策4 rm /tmp/pids/server.pid でパスを指定して削除

$ rm /tmp/pids/server.pid

$ rails s
→ 解決

このファイルの場所は[アプリ名]/tmp/pids/server.pidに入っているので、パスを指定して削除します。
本来、サーバーを終了するとこのファイルは削除されますが、残ったままでエラーになっている可能性があるみたい。
※ server.pidはサーバー起動や終了で勝手に作られたり削除されたりするので、普段は気にしなくて良いです。

 

まとめ

以上が、A server is already runningの解決方法でした!
基本的には、どこかのターミナルでrails sが動きっぱなしでサーバーが起動できないパターンが多いです。
それでも起動がうまくいかない!っていう方は解決策2の方法を試してもらえれば、基本的には治ると思います!