気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Vagrant Rails4.2にホストOSから繋ぐ方法

Vagrant+VirtualBox+Ruby+Railsによる仮想環境へのRails環境構築は下記を参照することで実現できました。
【Windows7】VirtualBox + Vagrant + Ruby + Rails4 開発環境の構築【初心者必見】 - Qiita

ただ、仮想環境で実行したrails serverへホストOSへ繋げませんでした。

f:id:tamata78:20160131164114p:plain

下記の2つの設定を行ったところ、アクセスできるようになりました。

仮想環境にホストOSのブラウザからIP指定でアクセスできるようにする設定

Vagrantfileに記載するネットワーク設定をpublic_networkに変更。コメントアウトされている箇所を コメントアウト解除する。

Vagrantfile

config.vm.network = "public_network"

rails serverをオプション付きで起動する

$ rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.5.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-01-31 07:09:07] INFO  WEBrick 1.3.1
[2016-01-31 07:09:07] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-01-31 07:09:07] INFO  WEBrick::HTTPServer#start: pid=2766 port=3000

f:id:tamata78:20160131164029p:plain

アクセスできた。。

オプション付きで起動しないと下記のRails4.2の変更が行われた影響でアクセスできなくなるとのこと。

以下、Ruby on Rails 4.2 リリースノートより引用

3.3 rails serverのデフォルトホスト Rackの変更 により、rails serverコマンドを実行した際のデフォルトのホストが0.0.0.0からlocalhostに変更されました。この変更は標準的なローカルでの開発ワークフローにほとんど影響を与えないはずです。http://127.0.0.1:3000 および http://localhost:3000 の動作はどちらも以前と同じであるからです。

ただし、今回の変更により、別のPCからRailsサーバーへのアクセスは以前と同じようにはできなくなります。たとえば、development環境が仮想マシン上にあり、ホストマシンからこのdevelopment環境にアクセスする場合などがこれに該当します。 このような場合、サーバーを起動する際にrails server -b 0.0.0.0とすることで、以前と同じ動作を再現できます。

(追加で設定しておくと便利) interface を手動選択しなくていい方法

Vagrant に public interface を追加した場合、vagrant up時に interface を手動選択する必要が出てきます。

bridge の指定をすることで回避可能

config.vm.network :public_network, bridge: 'en0: Wi-Fi (AirPort)'

ブリッジに使いたい interface は、ホストによって変更する場合は下記を参考にしてください。
環境変数で Vagrant の bridge を指定できるようにする - Qiita

参考URL

Vagrantで作成した仮想環境のRails4.2に繋がらない!! - Qiita
Rails 4.2 - 2014/12 - Rails ガイド