事象
何かしら処理をしている最中にサーバーを止めてしまった時、再度サーバーを立ち上げようとすると次のエラーが発生した。
`bind': Address already in use - bind(2) for 127.0.0.1:3000 (Errno::EADDRINUSE)
原因と対処法
既に3000番ポートが使われているというエラー。
解決方法は2つ
- 別ポートを使用する
- 使用されているプロセスを切る
1. 別ポートを使用する
3000番ボートが使用されているのなら別のポートを使用してサーバーを立ち上げればいい、という話。
※だが、根本的な解決にはなっていないので、2の方法をするのがいい
# 3000番以外のポートで立ち上げる
rails s -p 8000
2.使用されているプロセスを切る
現在動いているrubyのプロセスを確認する
$ ps -ax | grep ruby
動いているプロセスがあれば次のように表示される。
6462 ttys011 0:12.64 /Users/*****/.rbenv/versions/2.5.3/bin/ruby bin/rails server
8380 ttys011 0:00.00 grep ruby
動いているrailsプロセスをkillします。
$ kill 6462
プロセスがkillされたか確認する
$ ps -ax | grep ruby
6462 ttys011 0:12.64 /Users/*****/.rbenv/versions/2.5.3/bin/ruby bin/rails server
8380 ttys011 0:00.00 grep ruby
切れていないようなので、killコマンドにオプションをつけて強制的にkillする
# "-9"は強制終了のオプション
$ kill -9 6462
# プロセスを再確認
$ ps -ax | grep ruby
8405 ttys011 0:00.00 grep ruby
これでrailsプロセスは切れたのでrailsサーバーが立ち上がるようになっているはずです。