Herokuの新しいCedar Stackを使う。
今までと大きく違うのはforemanを使ったprocess modelが導入されたこと。要はwebアプリもcronジョブもバックグラウンドタスクもみんな宇宙船UNIX号の仲間たち、foremanで平等に扱おうよということ。具体的にはProcfileにprocessの設定を書いてforeman経由で動かす。
# Gemfile:
source :rubygems
gem 'rack'
# config.ru:
require 'rubygems'
require 'rack'
class App
def call(env)
[200, {'Content-Type' => 'text/plain'}, ['hello']]
end
end
run App.new
# Procfile:
web: bundle exec rackup -p $PORT
こんな感じ。
$ gem install foreman
$ foreman start
ローカルでもforemanで試せる。
$ heroku apps:create --stack cedar
$ git push heroku master
$ heroku apps:open
いいね!
process typeを自分で定義する
unixのprocessなら何でもありなので適当に定義できる。
# Procfile:
web: bundle exec rackup -p $PORT
unk: echo unk; sleep 1000
% foreman start
02:23:42 web.1 | started with pid 77070
02:23:42 unk.1 | started with pid 77071
02:23:42 unk.1 | unk
02:23:43 web.1 | [2011-06-23 02:23:43] INFO WEBrick 1.3.1
02:23:43 web.1 | [2011-06-23 02:23:43] INFO ruby 1.8.7 (2011-02-18) [i686-darwin10.7.0]
02:23:43 web.1 | [2011-06-23 02:23:43] INFO WEBrick::HTTPServer#start: pid=77072 port=5000
こいつは自由だぜ。