Rails無料PaaS「Heroku」を使ってWEBアプリを公開してみた


GAEなどもまだRubyでのサービスを開始していないが、ずいぶん前にブラウザでRailsアプリが構築できるといって話題になったHerokuが、これもまたずいぶん前に本格的にRailsのPaaSを始めていたらしいので今更ながら環境作りにトライしてみた。


■Heroku
http://heroku.com/



Ruby専用だけあってかサービスのプランもBlossom(桜)、Koi(鯉)、Ronin(浪人)、Fugu(河豚)、Zilla(ゴジラ)と日本由来(?)の名称となっている。(なんでSakuraじゃないのか?なぜSamuraiではなくRoninなのかはちょっと疑問だが・・・)


Herokuの特徴は以下のとおり
 ・Rails 1.2.x, 2.x and 3.0.0betaをサポート
 ・DBはPostgreSQL(無料版での全体の容量5MB)
 ・MySQLもオプションで可能(AmazonRDSとの連携のみ)
 ・データバックアップ(世代バックアップは有料)
 ・デイリーのCron利用可能(デイリー以下の周期は有料)
 ・SSLも可(独自ドメイン等にする場合は有料)
 ・CouchDBとMongoDBもアドオンで利用可
 ・全文検索はSolrをサポート
 ・Memcachedもサポート
 ・大量メール送信も可能
 ・そのほかにもアドオンが用意されている
など機能も満載で商用利用でも問題なさそうです。


※ちなみ共同購入クーポンの「ミナワリ」もHeokuを使って構築しているとか。http://www.publickey1.jp/blog/10/rorpaasheroku.html
■ミナワリ
http://www.minawari.jp/


では、そろそろ本題に・・・


Documentを見る限り以下のように
 ・gemでherokuコマンドツールをインストール
 ・heroku createでアプリを作成
 ・Gitでソースをアップロード
という感じで構築できるらしい。


ここではタイトルと本文を登録する程度の簡単なノートアプリを作ってみた。


■ユーザ登録する
http://api.heroku.com/signup


■Gitをインストール
以下からGitをインストール
 Windowshttp://code.google.com/p/msysgit/
 Machttp://help.github.com/mac-git-installation/


■gemでHerokuのコマンドツールをインストール

$ gem install heroku


Railsのプロジェクトを作成(ローカル)

$ rails mynote -d postgresql

※Heroku側がPostgreSQLなので"-d postgresql"を付けてみたがなくても問題なさそう。


■共有リポジトリを作成

cd mynote
$ git init
$ git add .
$ git commit -m "new app"


■SSHKeyを作成
Gitで接続する際にSSHKeyが必要なので作成する

メモ:ここでPuTTYgen.exeを使ってキーを作ってみたものの、アップロードすると「Fingerprint can't be blank」など以降の工程でエラーになって進めなかった。いろいろググッていたら、Windowsの場合、「GitBash.exe」の中にssh-keygenコマンドがあり以下のコマンドでキーを作ったらうまくいった。

$ ssh-keygen -C (Herokuに登録したメールアドレス) -t rsa


■「heroku create」でアプリを作成

heroku create
Enter your Heroku credentials.
Email: (Herokuに登録したメールアドレス)
Password:
Uploading ssh public key C:\Documents and Settings\Owner/.ssh/id_rsa.pub
Creating hollow-sword-87..... done
Created http://hollow-sword-87.heroku.com/ | git@heroku.com:hollow-sword-87.git
Git remote heroku added

上記のように「heroku create (何も指定しない)」とすると、自動的にhollow-sword-87のようにランダムなアプリ名が割り当てられ、そのままドメインとされる。hollow-sword-87.heroku.com
「heroku create hogehoge」と指定すると、hogehoge.heroku.comとなる。
アプリ名は管理画面からでも変更可能。


管理画面にログインするとすでに作成されたアプリが表示されている。


■「git push」でローカルのソースをアップロード

$ git push heroku master


http://xxxx.heroku.com/ にアクセスしてpublic/index.htmlが表示された。


■次にDB接続を確認するためメモ機能をscaffoldで作成してみた

$ ruby script\generate scaffold note subject:string body:text
      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/notes
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
[f:id:nzm_o:20100811024308j:image]

      create  test/unit/helpers/
      exists  public/stylesheets/
      create  app/views/notes/index.html.erb
      create  app/views/notes/show.html.erb
      create  app/views/notes/new.html.erb
      create  app/views/notes/edit.html.erb
      create  app/views/layouts/notes.html.erb
      create  public/stylesheets/scaffold.css
      create  app/controllers/notes_controller.rb
      create  test/functional/notes_controller_test.rb
      create  app/helpers/notes_helper.rb
      create  test/unit/helpers/notes_helper_test.rb
       route  map.resources :notes
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/note.rb
      create    test/unit/note_test.rb
      create    test/fixtures/notes.yml
      create    db/migrate
      create    db/migrate/20100809091958_create_notes.rb


■scaffoldでされたソースを再びアップロード

$ git add .
$ git commit -m 'add new sources'
$ git push heroku master


■heroku rakeコマンドにてテーブルを作成

$ heroku rake db:migrate
(in /disk1/home/slugs/255381_50716a9_55a7/mnt)
==  CreateNotes: migrating ====================================================
-- create_table(:notes)
   -> 0.1196s
==  CreateNotes: migrated (0.1197s) ===========================================

※database.ymlは特に編集していなかったのだが問題なくmigrateできた。ここら辺の仕組みは別途調べようと思う。


http://xxxx.heroku.com/notes にアクセスして登録/変更/削除してみたが、問題なく動作した。



有料版はGAEに比べて若干高いが、開発合宿などでアプリを作ってサクッと公開したり、DBに付加をかけないマッシュアップ系アプリを公開したり、無料の範囲でもだいぶ利用価値が高いかもしれない。
今後、アドイン機能も少しずつ試していこうと思う。



入門git
入門git
posted with amazlet at 10.08.11
Travis Swicegood
オーム社
売り上げランキング: 41288
おすすめ度の平均: 5.0
5 内容が簡易で理解しやすい
5 簡潔でわかりやすい
5 網羅的でGit初心者にはお勧め