私は、ubuntuにしかインストールできないように思われる奇妙な依存関係を持つプロジェクトの開発マシンとして、浮浪者ボックスを使用しています。
データベースを作成し、ホストコンピューターにアプリコードを配置し、NFSファイル共有とpostgres configを介してvagrantインスタンスと共有します。
私の問題は、コンピューターを職場から自宅に移動すると、コンピューターのIPが変更され、database.yml
が無効になることです。サーバーとコンソールを機能させるには、新しいネットワークに参加するたびに、yamlファイルをホストの新しいIPアドレスで更新する必要があります。
Railsアプリはvagrantで実行されているため(ファイルはホストマシン上にあります)、ifconfigからipをgrepしようとすると、VMを参照していないため失敗します。ホストボックス。そのため、次のようなことは機能しません。
# database.yml
development:
Host: <%= `ifconfig en0 | grep "inet " | cut -d" " -f2` %>
Vagrantファイルにこの情報を渡すための設定がありますか、またはubuntuインスタンスが読み取ることができるホストIPのENV変数を作成する方法はありますか?
this によると、VMのデフォルトゲートウェイを介してホストに到達できます。
ランニング netstat -rn
ゲストの関連情報を提供する必要があります。私のマシンでは、上記のコードを次のように変更すると、物事がうまくいくように見えます。
# database.yml
development:
Host: <%= `netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10` %>
すべての仮想ボックスマシンは、この「魔法の」IPによってホストマシンを参照しますが、すべてのユーザーで機能するかどうかはわかりません。
10.0.2.2
それが常に静的であるかどうかはわかりませんが、私にとっては非常に便利です-オフィスから自宅でラップトップを使用できます-ルータによって異なるIPを私に割り当てましたが、私のVMはマスターの「信頼できる名前」を知っていますか? ???
Mattのソリューションの代替として、 プライベートネットワーク yourVagrantfileを使用することもできます。
次のような行を追加する場合:
config.vm.network "private_network", ip: "192.168.42.10"
Vagrantは2番目のアダプターを仮想マシンに追加し、そのサブネット上のホストオンリーアダプターに接続します。
このようにすると、database.yml
は単に192.168.42.1
常に(この例では)。