ポータル:Ruby / ポータル:git

herokuで動かしているアプリ : nvdajp-jtalk-dic

herokuで動かしているいたアプリ : orpheus_tw

heroku

since 2009-11-12

http://heroku.com

日本語の紹介記事(computerworld.jp)

2010-12-08 salesforce.com による買収が発表された

ruby_on_rails アプリケーションのホスティングを行うクラウドサービス。

git push でデプロイする、というところがかなり個性的だが、git と rails に慣れていれば天国のような環境。

tmp と log ディレクトリにしか書き込みができない、postgresql しか使えない、など制約もある。

だが rails のホスティングがまだまだ普及していない現状で、無料で rails アプリを公開運用できて、お金を払えばスケーラビリティを手に入れることができる、というところが嬉しい。

Facebook and Heroku 2011-09-15 Facebook アプリの開発・運用環境としての協業の発表。

rails アプリの作成とデプロイ

以下、Ubuntu 9.04 (VMware) での作業。

先に git init / git commit してから heroku create する。

$ sudo gem install rails
$ sudo gem install heroku

$ rails myapp
$ cd myapp
$ git init
$ git add .
$ git commit -m "initial commit"

$ heroku create
(新しいアプリの名前が表示される)
Git remote heroku added

この状態でブラウザから https://heroku.com/myapps を見ると、新しいアプリが表示されている。

$ git push heroku master
$ heroku open

Firefox で http://application-name.heroku.com/ が開く。Welcome aboard.

gem の利用

gem を freeze して push するのかと思ったが、もっとスマートな方法が提供されている。

sudo gem install mechanize で使えるものを、heroku の上で使う例。

myapp/.gems ファイルを作る。

mechanize

add して push する。

$ git add .gems
$ git commit -m ".gems"
$ git push heroku master

なんとこれだけで、以下が行われる。

-----> Installing gem mechanize from http://gemcutter.org, http://gems.rubyforge.org
       Building native extensions.  This could take a while...
       Successfully installed nokogiri-1.4.0
       Successfully installed mechanize-0.9.3
       2 gems installed

scaffold と migrate

$ script/generate scaffold items
$ git add .
$ git commit -m "scaffold items"
$ git push heroku master
$ heroku rake db:migrate
$ heroku open

Firefox が開く。

http://application-name.heroku.com/items/ を見ると、ちゃんと動いているが、なにも field を作っていないので、ただレコードを増やすことしかできない。

db:reset

データベースがおかしくなったと思ったときは。

$ heroku db:reset --app application-name

その他 heroku help でコマンド一覧。

heroku console

サーバ側の環境を irb で使う感じ。

$ heroku console
Ruby console for application-name.heroku.com
>> RUBY_VERSION
=> "1.8.6"

サーバで動いているのは 1.8.6 である。

delayed job

model や controller で数秒かかるような処理を行うと、容赦なくエラーにされる。 http で外部サービスを叩くような場合は、delayed job (DJ) が必要。 1ヶ月15ドルのオプションサービス。(2009年11月の時点で)

クレジットカードの情報を登録すると、オプションが購入可能になる。 どのアプリで利用するかを事前に選んで、アプリごとにオプションを申し込む。

2009年12月よりWorkersという新しい機能が導入され、現在 DJ は一種のWorkersとして動いているとのこと。

http://docs.heroku.com/delayed-job

http://railscasts.com/episodes/171-delayed-job

料金は 1 paid worker x NNNN hours x $0.05 per hour になった。1日1.2ドル。31日で37.2ドル。値上げですね。。

最初の設定は "heroku workers 1" で worker がひとつ動き出す。止めたかったら "heroku workers 0" すればよい。

cron

daily は free で hourly は $3.00 per month です。

$ heroku addons:add cron:daily
または
$ heroku addons:add cron:hourly

http://addons.heroku.com/cron

Rubyバージョンの選択

2010-03

Ruby REE 1.8.7 and Ruby MRI 1.9.1 が選べるようになる。rails 3 beta もサポート。

具体的な手順

  • .gems に rails -v 2.3.5 などと、rails を含む依存gemパッケージを追加する
  • git commit する。ダミーでも必要。echo » Rakefile など。
  • heroku stack:migrate で処理系を選ぶ
  • git push heroku master すると、サーバ側で stack のマイグレーションが行われる

2010-10-16

1.9.2 が使える

heroku stack:migrate bamboo-mri-1.9.2

だが ruby 1.9.2 + rails 2.3.8 で index.html.erb にマルチバイト文字を使うと怒られる、という問題に遭遇。

仕方なく bamboo-ree-1.8.7 に戻しました。

Apigee

Twitter プラグインの公式サポート http://docs.heroku.com/apigee

heroku.txt · 最終更新: 2011/10/27 20:06 by Takuya Nishimoto
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0