--- layout: old_post title: Railsホスティングサービスheroku.comとソース管理Git permalink: /tatsuya/show/419-rails-heroku-com-git ---

AmazonEC2上で動いて、Webブラウザから開発・運用できるRailsアプリケーションのホスティングサービスheroku.com

2458939824_03c924f305.jpg

Herokuが、ブラウザー内でRuby on Railsの開発を可能に

Heroku.com

がGitによるソース管理 & ローカル開発に対応したそうなので、ひとつ試してみる。Macで

 

Gitとherokuクライアントのインストール

まず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が立ち上がり、とりあえずローカル開発準備完了

2458134269_34e6fdf90d_o.jpg

 

編集、コミット、デプロイ

新しいコードを作って適当に編集


% 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 なんかの環境が便利だなと思った。