こんにちは、田中(邦)です。

2つ、3つほどの記事に分けて、Sinatraをベースに開発されたフレームワークであるPadrinoについて書こうかなと思います。

今回はMac(OS X 10.8.5)上でVagrantを使って仮想マシンを起動し、Ruby、PadrinoMongoDBをインストールしてGithubにソースコードをpushするところまでを解説したいと思います。

Vagrantの導入

Vagrantは仮想マシンの管理ツールで、Virtual Boxのフロントエンドとして動作します。

今回は本記事執筆時点で最新版となるv1.3.5を利用します。

オフィシャルサイトからVagrantとVirtual Boxをそれぞれダウンロードし、インストールしてください。

VagrantとVirtualBoxのインストールが終わったら、任意のディレクトリに移動して下記コマンドを実行してください。

$ vagrant init

実行するとVagrantfileというファイルが1つできていると思います。

これがvagrantの設定ファイルで、ネットワークの設定、どの仮想マシンを使うかなど色々と設定できます。

Vagrantbox.esに色々なboxが公開されていますので、今回は

CentOS 6.4 x86_64 Minimal (VirtualBox Guest Additions 4.2.16, Chef 11.6.0, Puppet 3.2.3)

を利用したいと思います。

Vagrantファイルを開いて17行目を次のように書き換えます。

config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box"

次にネットワークの設定です。
26行目の行頭の#を消し、ホストマシン(現在作業しているMac)からゲストマシンに192.168.33.10でアクセスできるようにします。

config.vm.network :private_network, ip: "192.168.33.10"

ここまで変更したらファイルの変更を保存し、vagrantを起動します。

$ vagrant up

を実行してください。
初回起動時はboxファイルを先ほど指定したURLから読み込んで来るので割と時間がかかると思います。
起動が完了したら

$ vagrant ssh

でゲストマシンにログインできます。

rbenvとRubyのインストール

Rubyをそのままインストールしても良いのですが、今回はrbenvを使ってruby 1.9.3-p448をインストールします。

下記のサイトの説明が分かりやすいので、参考にしてrbenv,ruby,bundlerをインストールしてください。

EC2 (Amazon Linux) に Ruby on Rails + Passenger + Apache 環境を構築する

今回はvagrantを利用しているのでグループはvagrantにしてください。

また、rbenv-install.sh を実行したあとは一度下記のコマンドを実行してください。

$ source /etc/profile.d/rbenv.sh

MongoDBのインストール

今回はデータベースとしてMongoDBを使いたいのでMongoDBをインストールします。

下記サイトを参考にインストールしてください。

virtualbox(centos)でmongodbインストールメモ(ついでにrockmongoも)

Padrinoのインストールと起動

/vagrant/以下に適当なディレクトリを作成し、移動します。


$ mkdir /vagrant/sample

$ cd /vagrant/sample

このディレクトリはホストマシンと共有されるので、コーディングやバージョン管理はホストマシン上で行うことができます。

次にPadrinoをインストールするためにGemfileを作成します。下記コマンドを実行してください。


$ bundle init

実行するとGemfileが作成されますので、一番下の行に


gem "padrino"

と追記し、保存してください。

bundlerをインストールしてからrbenv rehashしていない場合はコマンド実行前に行ってください。

保存できたら下記コマンドを実行し必要なファイルをインストールします。


$ bundle

これでPadrinoがインストールできたのでPadrinoのプロジェクトを作成します。


$ padrino g project sample -t shoulda -e haml -c compass -s jquery -d mongoid -b

これでプロジェクトが作成できました。

sampleディレクトリに移動し下記コマンドを実行すれば


padrino s -h 0.0.0.0

ホストマシンから
http://192.168.33.10:3000/

にアクセスすればPadrinoのエラー画面が出ると思います。

繋がらない場合はiptablesの設定を見直す、一時的に無効にするなどしてみてください。

Vagrant用のboxを作成

ここまでできたら、今後同じような環境を構築したい時にRubyのインストールから行うのは時間がかかって面倒なのでboxを作成しておきましょう。

ゲストマシンにログインしている場合はexitで抜けて


vagrant package

を実行すると、現時点での仮想マシンの状態がboxファイルに保存されます。

生成されたboxはS3などにアップロードしておくと便利です。

vagrantは他にもsaharaという便利なプラグインもありますので是非試してみてください。

saharaを使用すると仮想マシンをsandboxモードで動作させることができるようになり、sandboxモードをonにしてある程度操作してから気にいらなかったらロールバックを行うといったことができます。

下記コマンドでインストールが可能です。


vagrant plugin install sahara

詳しくはgithubにあるsaharaのページを参照してください

Githubでプロジェクトをホスティング

今後の開発のためにgithubにプロジェクトをホスティングしましょう。

githubに移動し、画面右上のcreate a new repoをクリックし新規repositoryを作成します。

作成できたらpadrinoプロジェクトのルートディレクトリに移動し、下記コマンドを実行します。

ゲストマシンのSSH Keyをgithubに登録していない場合はホストマシンから行ってください。


git init
git add .
git commit -m "first commit"
git remote add origin git@github.com:your_account_name/your_repository_name.git
git push -u origin master

こんな感じになっていればOKです。

今回はここまでになります。

お疲れ様でした。