読むとこ

http://devcenter.heroku.com/articles/heroku-command
http://devcenter.heroku.com/articles/ruby
http://devcenter.heroku.com/articles/procfile
http://theforeman.org/projects/foreman/wiki/Debian-Ubuntu_installation_by_packages

Bundlerって?

ロードするgemをサーバとローカルで揃え、かつバージョンを固定するためのもの。
http://www.oiax.jp/rails/rails3/bundler.html

stdoutがバッファリングされてheroku logsへの反映が遅れるのを回避

webプロセスは、config.ruに
$stdout.sync = true

workerプロセスは、エントリポイントの頭にでも書く

webプロセスなしで、デーモンのみを起動したい

git pushだけでは起動しない。以下で起動。workerはProcfileに書いた名前。
heroku scale worker=1

確認するには

heroku ps

1回scaleすれば、次回からはpushのみでOK。

ローカルではsqlite, herokuではpostgresqlにしたい

Gemfileを
gem 'sqlite3', :group => :development
gem 'pg', :group => :production
database.ymlはherokuが自動的に書き換えてくれるので、気にしなくていい

トラブルシューティング

MongoMapperを使用すると、push時にassets:precompileで失敗

production環境でのDBの設定が必要。mongo_mapper.rbも一部修正が必要。
http://www.iwazer.com/~iwazawa/diary/2011/12/heroku-rails3-mongolab-mongomapper.html