VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)
Vagrantを利用したRails開発の進め方
留意事項
Vagrantの利用を始めるとRails開発の考え方や進め方が大きく変わります。具体的な作業手順の説明に入る前に、留意事項を2つ述べておきます。
第1の留意事項は、Railsアプリケーション開発プロジェクトごとに別々の仮想マシンを作るということです。仮にプロジェクトAとプロジェクトBが同一のOSを標的にしていたとしても、原則として別々の仮想マシンを動かしてそこで開発を進めます。
第2の留意事項は、Vagrantの設定ファイルVagrantfileおよびそれに付随するファイル(プロビジョニングスクリプトなど)は開発チーム全体で共有するということです。もし、あなたのチームがGitやMercurialやSubversionなどのバージョン管理システム(SCMツール)を利用していれば、それらをリポジトリに加えましょう。あなたが独力で開発している場合でも同様です。
新規アプリケーションの作成
さて、新たにRailsアプリケーションxyzの開発を始めようというとき、従来であれば作業マシンの適当な作業ディレクトリで次のようなコマンドを最初に実行したはずです。
> rails new xyz
しかし、Vagrantを利用する場合は最初の手順が異なります。まずxyzというディレクトリを作成し、そこに移動します。以下、このディレクトリをプロジェクトディレクトリと呼ぶことにします。
> mkdir xyz > cd xyz
そして、そのディレクトリにVagrantfileというファイルを作ります。このファイルは他のプロジェクト用に作ったものを流用してもいいし、誰かがインターネット上で公開しているものを修正しても構いません。あるいは、次のコマンドを実行してひな形を作ることもできます。
> vagrant init
このVagrantfileがあれば、次のコマンド1つで仮想マシンの作成から起動まで終わらせることができます。
> vagrant up
仮想マシンが無事起動したら、次のコマンドによりSSHでゲストOSにログインします。
> vagrant ssh
そして、ゲストOS上でRailsアプリケーションの骨格を作ります。
$ rails new xyz
この結果、vagrantユーザーのホームディレクトリ/home/vagrantにディレクトリxyzができ、その中にRailsアプリケーションの初期ソースコードが生成されます。
続いて、できあがったRailsアプリケーションの骨格を/vagrantディレクトリに移動します。
$ cp -rT xyz /vagrant $ rm -rf xyz
/vagrantディレクトリはVagrantで仮想マシンを作成する際に自動的に作られます。オプション-r付きでcpコマンドを実行することにより、ディレクトリの内容を再帰的に(深い階層のサブディレクトリまですべて)コピーしています。cpコマンドのオプション-Tはコピー元ディレクトリの内容でコピー先ディレクトリを上書きするために付けています。このオプションを省くと/vagrantディレクトリの下にxyzというディレクトリが作られてしまいます。コピー元のディレクトリは不要なので削除してください。
以上が、新規アプリケーションの作成手順です。
3つのディレクトリの関係
ここまでの説明でプロジェクトディレクトリ、vagrantユーザーのホームディレクトリ、/vagrantディレクトリという3つのディレクトリが登場しました。少しややこしいので、整理しておきましょう。
- プロジェクトディレクトリ……ホストOS(WindowsやOS X)側に存在します。アプリケーションの名前がxyzなら、プロジェクトディレクトリのパスは~/projects/xyzとなります。ただし、プロジェクトディレクトリを~/projectsディレクトリの下に置くのは本書での決めごとです。
- vagrantユーザーのホームディレクトリ……ゲストOS(CentOSやUbuntu Server)側に存在します。パスは/home/vagrantです。
- /vagrantディレクトリ……ゲストOS(CentOSやUbuntu Server)側に存在します。パスは/vagrantです。
vagrantユーザーのホームディレクトリは、Railsアプリケーションの新規作成時に一時的に使用するぐらいで普段はあまり利用しません。
実際にRailsアプリケーションの開発が始まると、Railsルートディレクトリという用語も登場します。Railsアプリケーションが設置されたディレクトリという意味です。/vagrantディレクトリにRailsアプリケーションを設置すれば、Railsルートディレクトリになります。しかし、1つのOS上に複数のRailsアプリケーションを設置することが可能なので、/vagrantディレクトリとRailsルートディレクトリは同義語ではありません。
日々の開発作業
実は、プロジェクトディレクトリ~/projects/xyzと/vagrantディレクトリはVagrantによって「共有フォルダ」に設定されています。つまり、プロジェクトディレクトリのファイルを修正すれば、/vagrantディレクトリの同名ファイルに修正が反映されます。/vagrantディレクトリにディレクトリやファイルを追加すれば、プロジェクトディレクトリ側にも現れます。
この仕組みがあるため、Railsアプリケーションソースコードの編集作業をホストOS(WindowsやOS X)側で行うことが可能です。つまり、普段使っているお気に入りのテキストエディタやIDEをそのまま利用できるということです。
他方、Railsアプリケーションの起動と停止はゲストOS側で行います。つまり、SSHでログインした上で以下のコマンドを順に実行することでRailsアプリケーションを起動します。
$ cd /vagrant $ bin/rails s
アプリケーションを停止するには、ゲストOSのターミナル上でCtrl+Cを入力します。
同様に、RSpecによる自動テスト(Chapter 5)の実行もゲストOS側で行うことになります。
進行中の開発プロジェクトに途中から加わる場合
すでにVagrantを利用した開発プロジェクトが進行していて、あなたがそのプロジェクトに途中から加わる場合、開発環境の構築手順はとても簡単です。
まず、バージョン管理システムのリポジトリからソースコードを取得します。そのソースコードのルートディレクトリにはVagrantfileが含まれていることを確認しましょう。もし存在すれば、そのディレクトリで次のコマンドを実行するだけです。
$ vagrant up
初めて使うタイプのOSの場合は少し時間がかかるかもしれませんが、あなた自身が何か作業する必要はありません。ただ待っていれば開発環境ができあがります。
この記事のもとになった書籍 | |
---|---|
黒田 努 著 |
実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング本書は、Ruby on Railsの実践的な学習書です。最新のRuby2.0およびRuby on Rails4.1、RSpec3.0に対応しました。1つの企業向け顧客管理システムを作る中でRailsによるWebアプリケーション開発の基礎知識とさまざまなノウハウを習得していきます。各章末には演習問題が設けられているので、理解度を確かめながら確実に読み進められます。 |
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- VirtualBoxやVagrantを用いたRails開発環境の構築方法(後編)
- 開発環境の構築・共有を簡単にするVagrant入門
- Serverspecの概要からインストールまで
- Ubuntuを使ったWebサーバ構築
- 仮想マシンにCentOSをインストールする
- ズバリ!andLinuxは使えるのか?
- 実践「Heroku」をセットアップしてサンプルアプリを動かそう
- 仮想マシン自動作成・設定ツール「Vagrant 1.8」リリース
- Windows Azure上にLinuxインスタンスを立ち上げる(クエスト5)
- [入門編] RHELユーザーが知っておきたい、Ubuntu Serverとのコマンド・サービスの違い