Heroku を試してみる

Ruby On Rails の PaaS として有名な Heroku の使い方についてまとめてみます。

参考情報:

開発環境としては、Debian 6.0 を用います。

尚、Herokuの ruby version は 1.9.2の模様なので、Debianパッケージの ruby は使わずに rvm にてインストールした ruby-1.9.2 を使用します。

rubyのインストール(rvmを使用)

$ bash < <(curl -sk https://rvm.beginrescueend.com/install/rvm)

$ vi ~/.bash_profile
(下記を追加し、rvm環境を有効にする)
-s "$HOME/.rvm/scripts/rvm" && . "$HOME/.rvm/scripts/rvm"

(テスト例)
$ rails generate scaffold User name:string id:integer
$ rake db:migrate
$ git -a -m "update db"
$ git push heroku master
$ heroku rake db:migrate

(readlineやopenssl等、heroku で使用しそうなrubyライブラリは予め組み込んでおきます)
$ rvm pkg install readline
$ rvm pkg install openssl
$ rvm pkg install zlib
$ rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr \
--with-readline-dir=$HOME/.rvm/usr \
--with-zlib-dir=$HOME/.rvm/usr
$ rvm use 1.9.2 --default

Ruby on Rails(開発環境の準備)

次に、Ruby on Railsをインストールします。

$ gem install rails
$ bundle install

Heroku をインストール

次に、herokuサービスにアクセスするためのパッケージ(gem)をインストールします。

$ gem install heroku

テストアプリの作成

開発環境の構築が完了したので、次は railsアプリを作成します。

$ rails generate hello
$ rails server
(開発環境でアプリが起動することを確認)

heroku に deploy

herokuにアプリをデプロイするには、以下の手順を踏みます。

  1. railsアプリを開発環境で作成
  2. heroku側のアプリケーションサーバを起動(初回のみ)
  3. gitリポジトリにソースコードを登録(または更新)
  4. git pushコマンドを用いて heroku にソースコードを転送
heroku側のアプリケーションサーバを起動

$ heroku create
heroku側のアプリケーションサーバを起動します。サーバが起動すると、URLが発行されます。
初回は Emailアドレス及びパスワードを要求されますので、サインアップ時に登録した情報を入力します。
Enter your Heroku credentials.
Email: joe@example.com
Password:
Uploading ssh public key /Users/joe/.ssh/id_rsa.pub
Created http://high-sunrise-58.heroku.com/ | [email protected]:high-sunrise-58.git
Git remote heroku added
gitリポジトリにソースコードを登録

(railsソースコードの top ディレクトリにて)
$ git init
$ git add .
$ git commit -m "Initial code"
git pushコマンドを用いて heroku にソースコードを転送

$ git push heroku master
ブラウザを開いてアプリの動作を確認

$ heroku open

heroku 管理Web-UI

herokuのwebサイトにログインすると、下記のような管理画面を表示することができます。

heroku db:migrate 注意点

heroku で db:migrate をしようとすると、rakeコマンドがエラーで停止してしまいます。Rakefile の "require 'rake'" の手前で以下の require文 を追加すると良いようです。

require 'rake/dsl_definition'

(テスト例)
$ rails generate User name:string id:integer
$ rake db:migrate
$ git add .
$ git commit -m "update db"
$ git push heroku master
$ heroku rake db:migrate