heroku で eventmachine 上で rails で http を受けたり他のことをしたり

色々やりたい感じだったので

require ::File.expand_path('../config/environment',  __FILE__)
require 'bundler/setup'

EM.run do
  # do something for eventmachine
  Thin::Server.start Rails.application, '0.0.0.0', ENV["PORT"]
end

で、 forman で

web: bundle exec ruby start.rb

みたいな感じでやることで出来ました。

rails server thin -p $PORT などで上がった時に最初の一回だけ eventmachine な処理を書きたいけど、config.after_initialize などは rails の初期化の所なので、Thin::Server.start と自前で書くことで対処することにしました。