ヤルキデナイズド

Unclassified Articles on Software and IT

vagrant up すると .dev ローカルドメインを設定してくれる Landrush が便利な話

(2015年3月3日追記: .dev をローカルドメインに使うとゲスト上で gem コマンドが使えなくなる場合がある。 .test などを使うとよさそう)

Rack の世界には Pow というサーバがあって便利。何が便利かというと、ln -s ~/my-rack-app ~/.pow/my-rack-app こうやって Rack アプリへのシンボリックリンクを ~/.pow に入れるだけで、ブラウザで http://my-rack-app.dev にアクセスできるようになって、アクセスしたら自動で Rack サーバを立ち上げてくれる。

自動でローカルドメインをセットアップしてくれるのはすごい便利。 Vagrant でも Landrush というプラグインを使うとそういうことができる。インストールはこう:

vagrant plugin install landrush

Mac だとこれだけでよい。 Linux では設定が必要なので README 読んで。

インストールしたら Vagrantfile に設定を書く。

Vagrant.configure('2') do |c|
  ...

  if defined?(Landrush)
    c.landrush.enabled = true
  end
end

これで vagrant up すると一緒に DNS サーバが起動する。 myhostname.vagrant.dev にアクセスするとVMにリダイレクトされる。

Qiita の開発用サーバをローカルで立ち上げるときもこれを使っている。設定はこんな感じ:

Vagrant.configure('2') do |c|
 ...

  if defined?(Landrush)
    c.landrush.enabled = true
    c.vm.hostname = 'qiita.dev'
    c.landrush.tld = 'qiita.dev'
    c.landrush.guest_redirect_dns = false
  end
end

c.landrush.guest_redirect_dns = false を指定してる理由は忘れた。外すと動かなかった気がする。 c.landrush.tld = 'qiita.dev' を単純に = 'dev' にしない理由は Pow と共存させるため。ここに指定した TLD と同名のファイルが /etc/resolver 以下に生成される。その TLD を持つドメインにアクセスしたら、ファイル内で指定された DNS サーバがそれを処理する。という仕組みになっていて Pow は /etc/resolver/dev を使うので、バッティングを避けている。

これ便利なので使うとよい。