- localhost:3000に接続できない
- 1.「A server is already running」が表示される場合
- 2.「rails: command not found」が表示される
- まとめ
localhost:3000に接続できない
コードを編集し、挙動を確認するためにrails s...動かない
そんな場合の対処法をご紹介します。
1.「A server is already running」が表示される場合
原因
別の場所でサーバーが動いていることが原因。
対処法
Step1.サーバーを起動しているターミナルを探そう
ターミナル、テキストエディタ(VSCodeなど)において、サーバーを起動しているタブを見つけよう。
見つからない場合はすべてのターミナルを終了し、再度確認してみよう。
Step2.どのターミナルでもサーバーを起動していない場合
追記:
windowsなどの場合はターミナルのコマンドが異なり面倒なこともある。
その場合、
\tmp\pids\server.pidを削除すればOK。
前回のターミナルの終了に失敗し、サーバーのプロセスが残っている可能性が高い。
以下のコマンドをターミナルで実行しよう。
lsof -i:3000
プロセスが残っている場合は以下のように表示される。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 3057 username 12u IPv4 0xxxxxxxxxxxxxxxxx 0t0 TCP localhost:hbci (LISTEN) ruby 3057 username 14u IPv6 0xxxxxxxxxxxxxxxxx 0t0 TCP localhost:hbci (LISTEN)
プロセスを終了するために、以下のコマンドを実行しよう。
$ kill -9 [PID] ※上記の例の場合は、 $ kill -9 3057
これでプロセスを終了できたので、改めてrails sを実行しよう。
2.「rails: command not found」が表示される
rbenvを使用している場合、こちらが表示される可能性が高い。
他のrailsコマンドも実行できなくなっているはずである。(rails c、rails g...など)
原因
rbenvへのパスが消えてしまっている
対処法
Step1.設定ファイルを開く
以下のコマンドを実行し、zshrcを開こう。
vim ~/.zshrc
Step2.記述の追加
「i」キーを押して挿入モードにし、以下の記述を追記しよう。
eval "$(rbenv init -)"
追加が完了したら、「:wq」と入力し上書き保存をしよう。
これでrbenvへのパスが設定されたため、一度ターミナルを終了し、再起動した後にrailsコマンドを実行してみよう。
まとめ
rails sができないときは、①他のrailsコマンドが使用できるか? ②サーバーが起動していないか? を確認してみよう。
この記事で解決したら・・・