background_fuで「あとでやる」処理を書く
railsを使って「あとでやる」処理を実現する方法について
rubyのMLに回答をしてみたので、内容をここにも書いておきます。
質問メールは以下の通り。
RubyもRailsも初心者なのですが、 現在、Railsで簡単なtwitterのbotを作成しています。 Railsで作った設定画面から、投稿間隔の設定を 行い、後で変更できるようにもしたいのですが、 良いやり方がいまいち思いつかず、 困っています。 今のところ、考えているものは以下です。 1、cronで実行 2、backgroundrbで実行 3、タイマーでループ回して処理 (投稿間隔はDBから取得) 投稿間隔の設定ができるボット作成サイトなどは、 結構あるみたいなので、なんらかの方法でできると 思うのですが、恥ずかしながら、やり方がわからず、 質問させていただきました。できれば簡単な方法 でやりたいと思っています。
僕の回答は以下。
> > 2、backgroundrbで実行 > > 3、タイマーでループ回して処理 background_fu を使って投稿の間隔を設定する方法を大雑把に紹介します。 (タイマーうんぬんはbackground_fuの仕組みがケアしてくれます。) background_fu は以下な感じでデーモンとして起動させておきます。 ruby script/daemons start デーモンはjobsテーブルを5秒間隔(設定で変更可能)で selectします。 処理してよいJobがあれば実行します。 (処理してよい => 未処理 && 開始時刻過ぎてる) 実行する処理はlib/worker以下にクラスを作っておきます。 JobにはWorkerのクラス名、メソッド名、引数、実行開始時刻 を入れておきます。 Job.create! :worker_class => 実行するWorkerのクラス名, :worker_method => 実行するWorkerのメソッド名, :args => メソッドの引数, :start_at => 実行開始時刻 みたいな感じ。