はじめに
自宅の MacBook Pro は開発専用じゃないので、 PostgreSQL や Memcached といったミドルウェアをインストールしたくない。 そこで Vagrant を使って、気軽に作ったり壊したりできる開発環境を構築してみることにした。
今回は rails-dev-box を使ってみる
Rails 本体の開発環境を作るための box。 Ruby だけでなく MySQL や PostgreSQL や Memcached といった、もろもろのミドルウェアがインストールされた環境を、簡単に作成できる。
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 コマンド無いから、PuTTY や TeraTerm 使う必要があったけど。 その他の注意点としては、Bundler を実行するとき
bundle install --path vendor/bundle
ではなく
bundle intall
にすること。そうしないと、自分の環境では gem のインストールに失敗してしまった。