2010年9月22日水曜日

Ruby 1.9.2 + Rails 3.0 + DataMapper on HerokuをUbuntuでやってみた

このドキュメントは、Rails界隈の最新技術を集めて、サンプルアプリを作り、Herokuにデプロイするまでの手順をまとめたものです。開発環境は、Ubuntu 10.04。


環境
・Ubuntu 10.04 Desktop 64bit
・RVM 1.0.11
・Ruby 1.9.2
・Rails 3.0.0
・DataMapper 1.0.2
・jQuery 1.4.2
・RSpec 2.0.0


RVMのインストール
いろんなバージョンのRubyを切り替えて使いたいので、RVMを使って、Rubyをインストールします。
まずは、rvmのインストールに必要なものをインストールします。
$ sudo apt-get install curl git-core libreadline-dev

準備が整ったら、rvmのインストールを実行します。
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

環境変数に、rvmのパスを追加します。
$ vi ~/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # 末尾に追加
$ source ~/.bashrc


Rubyのインストール
rubyをインストールする前に、下記のライブラリをインストールしておきます。
これを入れておかないと、Rails動かすときにエラーが出ます。
$ rvm package install zlib
$ rvm package install readline
$ rvm package install openssl

zlibのパスだけ上記でインストールしたものに変更して、Ruby 1.9.2をインストール
$ rvm install 1.9.2 -C --with-zlib-dir=$HOME/.rvm/usr,--with-readline-dir=$HOME/.rvm/usr,--with-openssl-dir=$HOME/.rvm/usr

デフォルトで使うRubyのバージョンを指定します。
$ rvm use 1.9.2 --default


PostgreSQLのインストール
今回は、DBにPostgreSQLを使います。
$ sudo apt-get -y install postgresql postgresql-server-dev-8.4 pgadmin3

インストール完了後、管理者アカウント"postgres"のパスワードを設定します。
$ sudo passwd postgres

設定ファイルを書き換えます。
$ sudo vi /etc/postgresql/8.4/main/pg_hba.conf

# Railsから接続するための設定(postgresユーザーで接続する場合)
# local all postgres ident コメントアウト
local all postgres trust # 追加

# pgAdmin3から接続するための設定
# host all all 127.0.0.1/32 md5 コメントアウト
host all all 127.0.0.1/32 trust # 追加

PostgreSQLを再起動。
$ sudo service postgresql-8.4 restart

PostgreSQLのアダプタをインストール。
$ gem install pg


Railsのインストール
$ gem install rails


サンプルアプリの作成
Railsプロジェクトの作成
"rails new"コマンドを実行して、プロジェクトを作成します。
"-m"でテンプレートを指定することにより、DataMapper用の初期設定まで自動的に行われます。
$ rails new testapp -d postgresql -m http://datamapper.org/templates/rails.rb
$ cd testapp

"bundle install"で、DataMapper関係のライブラリをインストールします。
$ bundle install


Hamlの導入
テンプレート記述言語を、Hamlに入れ替えます。

Gemfileに、下記の一行を加えて、"bundle install"でインストール。
$ vi Gemfile

gem 'haml-rails'

$ bundle install


jQueryの導入
JavaScriptライブラリを、jQueryに入れ替えます。

Gemfileに、下記の一行を加えて、"bundle install"でインストール。
$ vi Gemfile

gem 'jquery-rails'

$ bundle install

インストール後、下記のコマンドを実行すると、prototype.jsがjQueryに置換されます。
$ rails g jquery:install


Rspecの導入
テスティングフレームワークを、RSpecに入れ替えます。

Gemfileに、下記の一行を加えて、"bundle install"でインストール。
$ vi Gemfile

group(:development, :test) do
  gem 'rspec-rails' # ここに追加する
end

$ bundle install

あとは、設定ファイルをジェネレートして、準備完了です。
$ rails g rspec:install


database.ymlのユーザー名とパスワードを変更します。
$ vi config/database.yml

defaults: &defaults
adapter: postgres
username: enteryourusername
password: enteryourpassword

development:
testapp_development
<<: *defaults

test:
database: testapp_test
<<: *defaults   

production:
database: testapp_production
<<: *defaults

scaffoldで、ファイルを一式作成します。
$ rails g scaffold hoge title:string body:text

DBとテーブルを作成します。DataMapperの場合は、"rake db:migrate"ではなく、"rake db:automigrate"だということに気をつけてください。
$ rake db:create
$ rake db:automigrate

Webサーバを起動します。
$ rails s

ブラウザで、http://localhost:3000/hogesにアクセスし、きちんと表示されれば、成功です。


Herokuにデプロイ
Herokuにデプロイするまでの手順は、本家のドキュメントを参考にしてください。
Heroku | Heroku Quickstart Guide

注意点
1. マイグレーション
ローカルでの実行時同様、DataMapperの場合は、"heroku rake db:migrate"ではなく、"heroku rake db:automigrate"になります。
2. Rubyのバージョン
Herokuのデフォルトは、1.8.7です。下記のドキュメントを参考に、1.9.2への切り替えを行ってください。
Heroku | Platform Stacks (Beta)

その他
production.logを見たい場合はこちら。
Heroku | Logs and exceptions

0 件のコメント:

コメントを投稿