Vagrant + rails-dev-box で Rails アプリ開発環境を作成

はじめに

自宅の MacBook Pro は開発専用じゃないので、 PostgreSQLMemcached といったミドルウェアをインストールしたくない。 そこで Vagrant を使って、気軽に作ったり壊したりできる開発環境を構築してみることにした。

今回は rails-dev-box を使ってみる

Rails 本体の開発環境を作るための box。 Ruby だけでなく MySQLPostgreSQLMemcached といった、もろもろのミドルウェアがインストールされた環境を、簡単に作成できる。

Rails アプリの開発でも使えそう。

早速やってみた

Vagrant と git は既にインストールしていることが前提。

host $ git clone https://github.com/rails/rails-dev-box.git
host $ cd rails-dev-box
host $ vagrant up

たったこれだけで、box をダウンロードして、仮想マシンを起動し、 Puppet の実行までやってくれる。

ゲスト OS とホスト OS 間で rails-dev-box ディレクトリを同期できる

ホスト OS の rails-dev-box ディレクトリをゲスト OS の /vagrant にマウントするので、

host $ rails new sample_app --skip-bundle
host $ vagrant ssh
guest $ cd /vagrant
guest $ ls
MIT-LICENSE  puppet  README.md  sample_app  Vagrantfile

という感じで、ホスト OS 側で作成した Rails プロジェクトを、ゲスト OS 側からも触れる。

ゲスト OS で起動した Rails アプリにホスト OS から手軽にアクセスできる

rails-dev-box の Vagrantfile には、 ホスト OS の 3000 番ポートに送られてきたデータを、ゲスト OS の 3000 番ポートに送信する、 ポートフォワード設定が記述されている。

そのため、

guest $ cd sample_app
guest $ bundle install
guest $ rails server

でゲスト OS 側で起動したサーバーに、ホスト OS 側のブラウザでは localhost:300 でアクセスできる。

ホスト OS 側でコードを書いて、デバッグやテストをゲスト OS 上で実行する開発フローが可能

この開発フローは rails-dev-box の README に書いてある。

参考までに、Windows マシンでも試してみたら上手くいった。 Windows には ssh コマンド無いから、PuTTYTeraTerm 使う必要があったけど。 その他の注意点としては、Bundler を実行するとき

bundle install --path vendor/bundle

ではなく

bundle intall

にすること。そうしないと、自分の環境では gem のインストールに失敗してしまった。