rorrrr

こんにちは、WebマーケッターのYoshimiです。Web解析や分析が好きです!

Rubyの開発(勉強)を行っている時に

TCPServer Error: Address already in use – bind(2)

とコンソール上に表示され、ローカルサーバーが起動せず苦戦している方も多いはず。(私ものひとりでした。)

WEBrickが関係しており、内容としては、解放したいポートがすで利用中であり、2重に利用はできませんよという警告です。
つまりはそのポートを切ってあげれば良いわけですね。

この問題は、結構多くのブログでも取り上げてられているので、サクッと解決しましたが、初心者にはなにを切れば(切断)すればいいの?と番号を探してしまう人もいるかもしれませんので、ご紹介いたします。

WEBrick::HTTPServer.new( :Port => **** )

****(アスタリスク)は解放するポート番号です。とあるサイトでは「3000」「8099」など表記がことなりますが、皆さんがプログラムで記述したポート番号になります。

$ lsof -i:****

を実行しますと

COMMAND PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby2.0 697 ookawayoshimi    9u  IPv6 0x350addb5b80b6cd1      0t0  TCP *:**** (LISTEN)

という風に表示されるはずです。

PID番号に注目してください。この場合のプロセスNoは697になります。これを切ってあげましょう

kill -9 697

これで、正常に動くと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です