--- layout: old_post title: Railsホスティングサービスheroku.comとソース管理Git permalink: /tatsuya/show/419-rails-heroku-com-git ---
AmazonEC2上で動いて、Webブラウザから開発・運用できるRailsアプリケーションのホスティングサービスheroku.com
Herokuが、ブラウザー内でRuby on Railsの開発を可能に
がGitによるソース管理 & ローカル開発に対応したそうなので、ひとつ試してみる。Macで
まずPCにGitが入ってないのでインストール。そういえばGitが海外のRubistの間で流行ってるらしいねー、Coderepos的なGithubってGitリポジトリ共有サイトもあるらしいし。で今回のherokuもソース管理にGitを使うのでインストール
% sudo port install git-core
その後、herokuのコマンドラインクライアントをインストール
% sudo gem install heroku
自分用のssh公開・秘密鍵が無ければ用意しておく
% ssh-keygen -t rsa
自分のherokuアカウントと、ssh公開鍵を関連付ける
% heroku list
Enter your Heroku credentials.
Email: mymail@example.com
Password: ********
Uploading ssh public key
=== My Apps
resttest
登録成功、この時点でWeb上から作成済みのアプリケーションがあると、表示される。
コマンドラインから新しいアプリケーション "tktest" を作成
% heroku create tktest
Created http://tktest.heroku.com/
ブラウザで開くと確かに作成済み、次にリポジトリからローカルへ落とす
% heroku clone tktest
裏では git clone tktest@tktest.heroku.com みたいなコマンドを実行してるっぽい。ここで何故かssh-keyが見付からないと言われたので ~/.ssh/config を書いておいた、Protocol 1 は不要だと思う。
% emacs ~/.ssh/config
Host *
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/identity
Protocol 2,1
tktestフォルダ内に通常通りRailsアプリのディレクトリができている筈
% cd ./tktest
% ruby script/server
mongrelが立ち上がり、とりあえずローカル開発準備完了
新しいコードを作って適当に編集
% ruby script/generate scaffold Post body:text
.........
とりあえずできた、localhostで確認してからコミットする
% git add .
% git commit
gitの使い方がよく判らないけど、とりあえずコミット完了。本番環境へ反映する
% git push
Enter passphrase for key '.ssh/id_rsa':
Counting objects: 43, done.
Compressing objects: 100% (29/29), done.
.........
HEAD is now at e6b0b72... test
NOTICE: CREATE TABLE will create implicit sequence "posts_id_seq" for serial column "posts.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "posts_pkey" for table "posts"
(in /mnt/home/userapps/15472)
== 1 CreatePosts: migrating ===================================================
-- create_table(:posts)
-> 0.1817s
== 1 CreatePosts: migrated (0.1818s) ==========================================
herokuのリポジトリへPushと同時に rake db:migrate と mongrelの再起動までやってくれるぽい。確認してみる
http://tktest.heroku.com/posts
うむうむ、動いてる。
まあちょっとしたアプリケーション作るには楽で良いなheroku.com。現在はベータ中で無料、正式サービスになると課金が始まるらしいけどAmazon EC2で動いているので、課金額もそれくらいになるのかな。Google App Engineと比べると面白い機能は無いけど、作ったサービスの人気が出て自分のサーバで運用したくなったときにheroku.comは良いな。Rails & mongrel & MySQL(?) という普通の環境なので。
例えば突然 heroku.com のサーバが爆発してサービスが止まっても、ローカルにソースコード一式がで揃っているので自分のサーバを用意して復旧できる。データのバックアップだけは気を付ける必要あるけど、ちなみに heroku.com 本番環境の管理はWebからやれ、というポリシーらしい
DB管理画面
コンソール画面(ruby script/console)
あと、rakeタスクを実行する画面もある。
そういえば、ちょうど昨日Google app engineでちょっとしたアプリケーションを作る話を読んで
Google App Engineの使い道、tiny web service
確かに「サーバサイドで処理しないとできないけど、わざわざサーバを用意するのは面倒だな」ってときに、Google app engine や heroku.com や appjet.com なんかの環境が便利だなと思った。