35

ubuntuにしかインストールできないように見える奇妙な依存関係を持つプロジェクトの開発マシンとして、浮浪者ボックスを使用しています。

データベースを作成し、ホスト コンピューターにアプリ コードを配置し、NFS ファイル共有と postgres 構成を介して vagrant インスタンスと共有します。

私の問題は、コンピューターを職場から自宅に移動すると、コンピューターの IP が変更され、database.yml無効になることです。サーバーとコンソールを機能させるには、新しいネットワークに参加するたびに、yaml ファイルをホストの新しい IP アドレスで更新する必要があります。

Railsアプリはvagrantで実行されているため(ファイルはホストマシンにありますが)、ホストボックスではなくVMを参照しているため、ifconfigからIPをgrepしようとすると失敗します。したがって、次のようなものは機能しません。

# database.yml
development:
  host: <%= `ifconfig en0 | grep "inet " | cut -d" " -f2` %>

Vagrant ファイルにこの情報を渡すための構成がありますか、または ubuntu インスタンスが読み取ることができるホスト IP の ENV 変数を作成する方法はありますか?

4

3 に答える 3

6

Matt のソリューションの代わりに、Vagrantfileでプライベート ネットワークを使用することもできます。

次のような行を追加すると:

config.vm.network "private_network", ip: "192.168.42.10"

Vagrant は 2 つ目のアダプターを仮想マシンに追加し、それをそのサブネット上のホストオンリー アダプターに接続します。

database.ymlこのようにして、いつでも指し示すことができます192.168.42.1(この例では)。

于 2016-03-03T07:58:05.727 に答える