何か着ていればいいよ

ソフトウェア技術者の日常や技術の話を書こうと思います。

Virtual Box上でRails 4.2.1で WEBRickを立ち上げたら接続できなかった話

最近、ドットインストールでRailsの勉強していたのですが、レッスン通りにやっても動かなくて困った話。

dotinstall.com

"はじめてのRuby on Rails #3" でブラウザから動作確認すると接続できなかったのでなぜかな?と調べた経緯の記録。 *1

調査方法

  • まずVirtual Box上のGuest OSとの疎通がHost側からできてない?と思いました。
    • そのため、WEBRickの使っているPort:3000ではなく80にアクセスしてみる。
    • そうするとPort:80は正常に以前Apacheに仕掛けておいたページが見える
  • WEBRickが正常に動いてない?と思いました。
    • rails sで起動時に出るpidをpsコマンドの結果から探してみる。
    • あった。なのでWEBRickは起動している。
  • そこで、WEBRick起動時に表示されるPort:3000をListenしていないのでは?と思い立つ。
    • netstatコマンドでListenしているPortを確認Port:3000はListenしている。
    • そこで、気づくPort:80は0.0.0.0でListenしているけど、Port:3000は127.0.0.1でListenしている。

ここまでの調査結果からRailsからWEBRickを立ち上げる際に127.0.0.1にbindしているからHostから繋がらないのだな。とおおよそ推測。

そこで、rails s のオプションをしらべてrails s --bind=0.0.0.0で立ち上げたところHost側からブラウザ経由で繋がることを確認できました。 *2

めでたしめでたし。

と、行きたいところですが少し気になるところがある。

  • 127.0.0.1と0.0.0.0ってどう違いがあるんだっけ?

というわけで次はそこの調査。
とかやっていると全然Rails動かせないけど、こういう足回りというか基礎的なことを固めておかないとあとあと理解せずに泥沼に突っ込むので大事なステップだと思うのです。
拙速を尊ぶような組織では出来ないけど、自分の趣味でやっているので良いよね。

*1:あとあと、よく見たら補足情報に書いてあった…。でも調べたのは無駄じゃないよね。あと、自分で解決まで持っていけると気分が良い。

*2:そこらへん分かってから調べたらずばりの記事もあった。 qiita.com