概要
Rails4.2の開発環境をVagrantのCentOS7で作成していました。
Rails実行環境が出来てbundle exec rails sで起動し、ホストOSのブラウザからIP指定してアクセスしようとしてもつながらず・・
色々試して解決できたので、記録しておきます。
前提条件
Vagrantで起動した仮想環境にホストOSのブラウザからIP指定でアクセスできるように、Vagrantfileに記載するネットワーク設定をpublic_networkにしています。
config.vm.network = "public_network"
解決方法
rails server のbinding オプションを設定する
Rails4.2でrails serverコマンドを実行すると以下のように表示されます。
$ bundle exec rails s
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-03-19 10:01:40] INFO WEBrick 1.3.1
[2015-03-19 10:01:40] INFO ruby 2.2.0 (2014-12-25) [x86_64-linux]
[2015-03-19 10:01:40] INFO WEBrick::HTTPServer#start: pid=3487 port=3000
上記の3行目に,
Rails 4.2.0 application starting in development on http://localhost:3000
と記載されている通り、localhostからのアクセスしか受け取らないようになっています。
Rails4.2のリリースノートを確認してみるとしっかり記載されていますね・・・
3.3 rails serverのデフォルトホスト
Rackの変更 により、rails serverコマンドを実行した際のデフォルトのホストが0.0.0.0からlocalhostに変更されました。
VMで起動しているRailsサーバーに外のOSからIP指定でアクセウするには以下のようにbindingオプションで0.0.0.0を指定します。
$ bundle exec rails server -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-03-19 10:10:04] INFO WEBrick 1.3.1
[2015-03-19 10:10:04] INFO ruby 2.2.0 (2014-12-25) [x86_64-linux]
[2015-03-19 10:10:04] INFO WEBrick::HTTPServer#start: pid=3571 port=3000
これで仮想VMのIPを指定してホストOSのブラウザからアクセスできるようになりました。
あとがき
ちゃんとリリースノートを読みましょう。