Parallels Desktop上の仮想マシンからローカルのrailsアプリにアクセスする方法
ローカル環境(ホストマシン)で動かしている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
Rubyに関する他の記事を読む
- slimでtype='application/ld+json'のscriptタグを書く
- Slack APIによる自動メッセージでユーザーグループにメンションする方法
- RubyでUnixtimeからTimeオブジェクトを生成する
- gemインストール時にUndefined symbols for architecture arm64と出たときの対応
- RubyでUTCの時刻情報をJST基準に変換する
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら