$ rails s 実行時に下記のエラーが発生したのでメモ
Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
エラー内容
ローカルでサーバーを起動できなくなってしまった。。
$ rails s => Booting Puma => Rails 5.1.6 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.9.1 (ruby 2.5.1-p57), codename: Private Caller * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000 Exiting /Users/username/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/puma-3.9.1/lib/puma/binder.rb:269:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
解決策
Errorメッセージを見ると、0.0.0.0:3000 はすでに使われているよ!
とのことなので、$ lsof -i:3000 でポート3000番を使用しているプロセスを確認
$ lsof -i:3000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 4141 username 19u IPv4 0x228ce2498105f021 0t0 TCP *:hbci (LISTEN) ruby 5580 username 19u IPv4 0x228ce2498105f021 0t0 TCP *:hbci (LISTEN)
なぜか2つもありました。。
killコマンドを使い実行中のプロセスを削除する $ kill -9 PID
再度 $ lsof -i:3000 を実行し何も表示されなければok
$ kill -9 4141 $ kill -9 5580 $ lsof -i:3000 # 何も表示されない
$ rails s を実行すると
$ rails s => Booting Puma => Rails 5.1.6 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.9.1 (ruby 2.5.1-p57), codename: Private Caller * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000 Use Ctrl-C to stop Started GET "/" for 127.0.0.1 at 2019-10-19 10:00:40 +0900
正常にサーバーを起動することができました!