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
を使うので、バッティングを避けている。
これ便利なので使うとよい。