そうだ、Rubyをやろう(9日目)

Ruby on Railsの開発環境を構築する

OS X 10.9.2, Ruby 2.1.1, Ruby on Rails 4.0.4


【前提条件】
・rbuenvの環境ができており、Ruby 2.1.1が動作すること(環境構築メモリンク
Ruby 2.1.1の環境にBundlerがインストールされていること(環境構築メモリンク


今回はいよいよRuby on Railsの開発環境を構築してみる。

今後作成するRailsアプリは、Bundlerを使って、アプリごとに自身が必要とするgemをローカル(アプリ内)に保持するように構成することとする。


・プロジェクトの基準ディレクトリを作成する
ここでは、~/Documents/RailsSample とする。

RoRをローカルにインストールする

$ mkdir ~/Documents/RailsSample
$ cd ~/Documents/RailsSample
$ touch Gemfile
$ vim Gemfile

# 以下2行を追加
source "http://rubygems.org"
gem "rails", "4.0.4" # ← Ruby on Railsのバージョンを指定。指定しなければ最新版が入る。

$ bundle install --path vendor/bundle

この時点ではまだまだ準備段階。
Railsアプリを作成するのに必要なgemを~/Documents/RailsSample/vendor/bundleにインストールしただけである。


RoRプロジェクトを作成する
プロジェクト名をrails_sampleとしてみる。

$ bundle exec rails new rails_sample --skip-bundle

ここで重要なのは、--skip-bundleオプションを指定すること。
こいつを指定することによって、「作成するRailsアプリが」必要とするgemのインストールを先送りにする。


・不要になったバンドルを削除
この時点で、「Railsアプリを新規作成(rails new)するための」gemは不要になったので、削除する。

$ rm -f Gemfile
$ rm -f Gemfile.lock
$ rm -rf .bundle
$ rm -rf vendor/
$ ls
rails_sample

これで綺麗サッパリ。プロジェクトは、~/Documents/RailsSample/rails_sample 以下に構成されている。
アプリに必要なgemはまだインストールされていない。


RoRプロジェクトの環境セットアップ
今度は、アプリ内で必要とするgemを定義する。

rails newした時点で、rails_sample/Gemfileは自動的に生成されており、「一般的に必要になりそうなもの」がGemfile内にあらかた定義されている。たとえば、SQLite3やjQuery*1など。Gemfileの内容はアプリで必要なものをインストールするように編集する。たとえば、DBにMySQLを使うならば、sqlite3のgem定義を消して、mysql2のgem定義を追加する、など。

今回は、デフォルトのままバンドルをインストールしてみる。

$ cd rails_sample
$ bundle install --path vendor/bundle


・Gitの管理対象から vendor/bundle ディレクトリを外す
gitでソースコード管理するなら、インストールしたバンドルを管理対象外にしておくこと。
なぜなら、アプリをリリースする際には、Gemfileを含めてリリースし、インストールする環境ごとにbundle installしなければならないからだ。

$ echo '/vendor/bundle' >> .gitignore


・プロジェクトを起動する
これでrails_sampleアプリの初期化は完了した。
Ruby on Railsに同梱されているWebサーバーをローカル起動して動作確認してみる。

$ bundle exec rails server

http://localhost:3000/ にアクセスすると、Welcome aboardサンプルページが表示される。
Webサーバーを終了するには Ctrl + C でOK。



【参考サイト】
http://qiita.com/emadurandal/items/a60886152a4c99ce1017



ひとまずこれで環境構築はできたように思える。

次回は何か簡単な画面を作ってみようと思う。



つづく

*1:jQuery-UIはデフォルトでは入らないようなので注意