Herokuは便利だけど無料の範囲内ではRackアプリケーションとデーモンを同時に動かせない。
アプリケーションは作り放題っぽいからRackアプリケーションとデーモンを別のアプリケーションとしてデプロイしてもよさそうではあるけど、遅延とか気になる。
そこまでクリティカルではないから気にしなくてよいのかもしれないけど。
でもひとつのデプロイ単位にRackアプリケーションとデーモンをまとめられるのならそのほうが管理は楽そう。
DotCloud - Deployment made simpleはアプリケーション (デプロイ単位) に1つ以上のサービスを加えられる。静的ファイルのサーヴやデータベースなどが揃っている。
ruby-workerというサービスがあって、これはRackアプリケーションとして起動せずsupervisordを使ってアプリケーションを起動するサービス。
いま作っているアプリケーションでジョブキューを使いたいな〜とおもっていて、とりあえずよいウェブインターフェースがついてくるdefunkt/resque - GitHubを試してみることにした。
dotcloud var list | ruby -F'=' -lnpae '$_=$F.map{|_|%Q!"#{_}"!}.join(": ")+","' > environment.json
とかしてenvironment.jsonに環境変数を書く。
あとはデプロイするだけ。デプロイしたデモでResqueのWebインターフェースみれる。
わざとsleep 10
してるのでジョブを追加してみるとおもしろ。
……とおもったけど、よく調べたらHerokuにスケジュールドタスクとかあるし、いざとなったらiftttとかあるし、DotCloudはRuby以外のアプリケーションを動かすためにとっておいたほうがいい気がしてきた。
関係ないけどベータ期間中にアカウントとって、それっきりなにもしてなかったのにベータユーザってことでProプランになってて、嬉しいやらなんか申し訳ないやら。