Ruby on Rails プロジェクトの開発環境を Vagrant で作る
こんにちは。 Gaji-Labo 衛生班の和田です。
Gaji-Labo Advent Calendar 2015、4日目の記事です。
Advent Calendar もいいけど、大掃除もね!
はじめに
※ このエントリーは「開発環境の構築になじみがない」「開発環境を構築・管理する自信がない」という人(普段 Rails をメインで触らない人たち)を対象に書いています。
弊社では、 Ruby on Rails を使用しているプロジェクトが多く、同時に複数の開発環境が必要です。
複数環境を実現する方法は色々あります。
また、特に複数環境を意識せずにローカル開発をしていても、特別、問題が発生するわけではありません。
しかし、時々、ちょっとしたミスから開発環境を壊してしまうことがあります。
また、使用中の PC が物理的に壊れてしまうことも考えられますよね。
そんな時、気軽に壊したり、作り直したりできる仮想環境を利用していると、ちょっとした保険になったり、しばらく触っていなかった、古い環境を再現することが簡単になります。
そこで、私は、 Vagrant をオススメしています。
Vagrant とは?
Vagrant とは、 VirtualBox など、仮想マシンを構築してくれるアプリケーションで、仮想マシンの構築と開発・テスト環境の構築をまとめて行える支援ツールです。
ご参考:Why Vagrant?
Vagrant のどこが便利なのか
- gulp, Grunt などを利用している人なら、使いこなせる程度のコマンド
- Vagrant や VirtualBox はパッケージをダウンロードしてインストールすれば使える
- 作ったり、捨てたりが簡単
- (やり方にもよりますが)少ないファイルで環境を保持できる
Vagrant で良く使うコマンド
「便利と言われても、コマンドでしょ……」と思われたかもしれません。
安心してくださいっ! 簡単ですよ!
vagrant up: 起動vagrant halt: シャットダウンvagrant suspend: 一時停止vagrant resume: 一時停止を解除vagrant reload: 再起動vagrant provision: プロビジョニングを実行vagrant ssh: SSH で仮想マシンに接続vagrant destroy: 仮想マシンを削除
豆知識
vagrant up , vagrant halt よりも、 vagrant suspend , vagrant resume を使ったほうが、起動が速くて良いです。
作ったり、捨てたり
- 作る:
vagrant up - 捨てる:
vagrant destroy
これだけです。
使い終わった開発環境をアーカイブしておきたい時は、 Vagrantfile と、それに付随するシェルスクリプト等を保存しておけば良く、仮想マシン自体は削除してしまってかまいません。
Ruby on Rails の開発環境を作る
あなたのチームのエンジニアさんが、プロビジョニング・スクリプトを書いてくれるなら、あなたがやることは、 Vagrant と VirtualBox(など)をインストールして、 vagrant up するだけ!
もし、それが出来ない場合も、 railsbox のようなツールで簡単に実現できます(かもしれません)。
Ruby on Rails の開発環境が壊れるパターン
(Vagrant と直接関係ないですが)開発環境は、以下のようなパターンで壊れがちです。
bundle installが上手くいかないrake db:migrateが上手くいかない
いずれのパターンも、自分では解決できないことが多いかもしれません。
そんな時は、一度、仮想マシン壊してしまって、あなたのチームのエンジニアさんに、プロビジョニング・スクリプトやそれに付随するファイルを修正してもらいましょう。
そして、そのファイルを使って、再び、 vagrant up する。
これだけで、(多くの場合は)動作するようになるはずです。
また、(Git などの)ブランチ間でデータベースの構造が異なるような場合は、スナップショットを使ってみるのも良いかもしれません。
スナップショットは、 Vagrant のプラグインを利用して、コマンドから操作することも可能ですし、 VirtualBox などの GUI で操作することも可能です。
Ruby on Rails なプロジェクトで日常的にやること
ここまでは、開発環境の構築が簡単に行えるということを書きました。
しかし、開発環境があるだけでは、作業を行うことができません。
ここでは、その他に必要な知識を少しだけご紹介します(プロジェクトによって違うはずなので、「これだけ覚えていれば大丈夫」ということではありません)。
- Git(など)の操作
bundle installで依存ライブラリの管理rake db:migrateでデータベースの更新rails sサーバーの起動(開発環境によって、使用するコマンドは変わります)
エイリアスを書いておく
慣れない間は、「 vagrant …… 何だっけ?」「rails s ……うーん、オプション忘れた……」ということもあるかもしれません。
そんな時は、エイリアスを書いておくと良いかもしれません。
仮想マシン内でのエイリアスについては、あらかじめ、プロビジョニングに加えていただくと良いと思います。
私の場合は、プロジェクトごとに、以下の例のようなエイリアスを用意して、Alfred から > _gaji のように呼び出しています。
例: ~/.zshrc
alias gaji='cd ~/Projects/gaji'
alias _gaji='cd ~/Projects/gaji;vagrant resume;vagrant ssh'
alias gaji_='cd ~/Projects/gaji;vagrant suspend'※ ~/.zshrc は環境によって ~/.bashrc などに読み替えてください。
まとめ
このエントリーでお伝えしたかったポイントは以下の通りです。
- 自信がないからこそ、 Vagrant がオススメです
- 気軽に作ったり、壊したり(捨てたり)できます
- 仮想マシンを使うので、環境依存の心配が減ります
- 覚えるべきコマンドは少しだけです
開発環境の構築で困っていた人や、これから開発環境を用意する人の参考になればうれしいです!
プロビジョニング・スクリプトを書く部分から開発環境の構築が可能な、弊社のフロントエンド系エンジニアが、あなたのサービス開発をお手伝いすることができます。お気軽にお問い合わせください!



