ローカル環境(ホストマシン)で動かしているRailsアプリに仮想環境からアクセスしたい、なんてことがたまにあります。

自分の場合はMacで開発をしているので、Windowsのブラウザで動作確認をしたい、なんてときがまさにそのとき。

Parallels Desktopを使っている場合は以下の方法でできます。

bin/rails sで動かしているときは-b 0.0.0.0とオプションを指定して起動します。

$ bin/rails s -b 0.0.0.0 -p 3000

bin/devで起動している場合は特に何もしなくてOK。Procfile.devを見ると、すでに-b 0.0.0.0が記載されています。

自分でforemanを使ってやっているようなときは、読み込んでいるProcfileの中身を同じように調整すればいけます。

web: bin/rails server -p 3000 -b 0.0.0.0
js: yarn build --watch
css: yarn build:css --watch

あとは、仮想マシンから指定するIPアドレスを確認しましょう。

ローカルマシンでターミナルからifconfigを実行するとネットワーク情報が表示されるので、そこからローカルのIPアドレスを確認します。

結構ドバッと表示されるけれど、bridge〜みたいのを目印にして探すといいです。

以下の例だとinet 10.211.55.2がそうですね。

$ ifconfig

# 途中省略

bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=3<RXCSUM,TXCSUM>
	ether be:d0:74:d0:01:64
	inet 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255
	inet6 fe80::bcd0:74ff:fed0:164%bridge100 prefixlen 64 scopeid 0x1c
	Configuration:
		id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
		maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
		root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
		ipfilter disabled flags 0x0
	member: vmenet0 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 27 priority 0 path cost 0
	member: vmenet2 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 31 priority 0 path cost 0
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active

あとは、仮想マシンからhttp://10.211.55.2:3000のように指定してあげるとローカルのrailsアプリにたどり着けると思います。

仮想マシンは便利ですね。ブラウザの動作確認程度であれば、実機を買わなくてもほぼ確認ができてしまう。

この記事の環境情報

  • Rails 7.0.4
  • Parallels Desktop 17.1.4