ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

rails sが動かない

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コマンドが使用できるか? ②サーバーが起動していないか? を確認してみよう。

この記事で解決したら・・・

にっこり