LoginSignup
21
19

More than 5 years have passed since last update.

rails s がうまく動かないときにやったこと

Last updated at Posted at 2015-12-24

Ruby on Rails を使って開発していて、ある日突然 rails s しても立ち上がらなくなるときがあります。
実体験に基づいています。つらい。

rails server が立ち上がるけど何も反応しない

このケースは、

$ rails s

をしてもちゃんとサーバが立ち上がります。しかし、 localhost:3000 とかでアクセスしてみてもログが流れません。
当然、ブラウザには何も表示されない事態が起こります。

このときは

$ ps ax | grep httpd

とかしても apache が動いていることが確認できて、わりとはまりました。
このときは、/etc/hosts

127.0.0.1 localhost # IPv4

がなく、

::1 localhost # IPv6

はだけある状態だったので、 IPv4 の記述をしたところ動くようになりました。

すでに3000番ポートが使われてると怒られる場合。

このときは

$ rails s

とかすると、

adding listener failed addr=0.0.0.0:3000 (in use)
retrying in 0.5 seconds (4 tries left)
adding listener failed addr=0.0.0.0:3000 (in use)
retrying in 0.5 seconds (3 tries left)
adding listener failed addr=0.0.0.0:3000 (in use)
retrying in 0.5 seconds (2 tries left)
adding listener failed addr=0.0.0.0:3000 (in use)
retrying in 0.5 seconds (1 tries left)
adding listener failed addr=0.0.0.0:3000 (in use)
retrying in 0.5 seconds (0 tries left)
adding listener failed addr=0.0.0.0:3000 (in use)
Exiting
/Users/user_name/git/project/vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.2/lib/unicorn/socket_helper.rb:185:in `bind': Address already in use - bind(2) for 0.0.0.0:3000 (Errno::EADDRINUSE)

こんな感じに怒られます。
この場合はたいてい他に rails server が立ち上がってたりするケースが多いので、もう一方の rails server を落とせばいいです。

しかし自分の場合は

$ ps ax | grep ruby
$ ps ax | grep rails

とかやっても実行中のプロセスが見つかりませんでした。
なので、lsof してオープンしてるプロセスをみてみると

$ lsof -i:3000
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
VBoxHeadl 91045 user_name   19u  IPv4 0xda7db325f97a1df3      0t0  TCP *:hbci (LISTEN)

VirtualBox が生き残ってたようです。 vagrant haltしたのに
そんなわけで動いていた VM を終了させて無事 localhost:3000 でアクセスできるようになりました。
UNIXコマンド知らなさすぎてかなり遠回りしてしまった感があります。。

またいろいろと rails server 周りで嵌まるたびに追加していこうと思います。

21
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
19