ruboty を heroku で動かすついでに web アプリケーションとして扱いたい。 その場しのぎで書いたコードを紹介する。

config.ru の中で別スレッドを起動して Ruboty#run を走らせた。

# Rackアプリになるように call メソッドを実装
module Ruboty::Web
  def call(env)
    [200, {'Content-type' => 'text/html'}, ['hello, world']]
  end
end
Ruboty::Robot.include(Ruboty::Web)

Thread.new do
  robot.run   # bot起動
end

run robot  # rack アプリを構築

heroku では 1X dynos でもスレッドが 256 個ぐらい起動できるっぽいしきっと大丈夫だろう。いや、わからんけど。

シグナル処理も追加したほうが良い気がするけど、とりあえず気にしない。

そのうちウェブアプリを構築しやすくする方法を考えたい。

関連