どうも、rails s -b 0.0.0.0って見かけたことありませんか?
私は全くそういったものを見かけたことがなかったのですが、この前見かけることがありました。
その時に、これなんぞ?と思ったので、調べて見ました。
rails s -b 0.0.0.0とは?
結論
仮想環境外部から仮想環境にアクセスできるようにするためです。
例えばrailsで動作を確認するとき、localhost:3000にアクセスしますよね?あれって、外部からはアクセスできないようになってます。
でもですね、例えばお客様に内容を確認して欲しいなーっていうときに、-b 0.0.0.0をつけると外部のお客様でも仮想環境にアクセス可能になるということです。
ちょっと詳しく
IPアドレスの127.0.0.1はlocalhostのことを表しています。こちらのIPアドレスには、仮想環境外部からアクセスはできないようになっています。
しかしですね、仮想環境は複数のネットワークインターフェースを持っています。localhost以外のものからなら、外部からでもアクセスできます。
rails sをすると、railsの起動プロセス、railsアプリケーションのプロセスは、localhostのみに関連づけされます。バインディングされると言います。
このままだと外部からアクセスできません。そこで-b 0.0.0.0というオプションをつけてあげます。
これによって仮想マシンの持つ全てのネットワークインターフェースにrailsのプロセスが関連づけられることになります。
結果として、仮想環境外部からでもアクセスできるようになります。
ちなみに
localhostってよく使ってますが、そちらのIPアドレスは127.0.0.1です。これはRailsで決められているんですね。
なので、localhost:3000としても、127.0.0.1:3000としてもアクセス可能です。
また[::1]:3000とかいうのも見たことがある人がいるかもしれません。この[::1]は IPv6のローカルホストを表しているんですって。