rufus-scheduler」タグアーカイブ

rufus-scheduler looks good

この記事は【2015年7月12日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

rufus-scheduler,ジョブのスケジューリングをシンプルに行える。
類似のところでwheneverというgemがあるが,そちらではcronで実行するジョブをわかりやすいrubyシンタックスで記述できcronに反映させるが,rufus-schedulerはシンプルなスレッドとして実装されている。cronというメソッドもあるが,cronには影響しない。

シンプルなスレッドの実装であり,プロセスが終了するとschedulerも終了するので,バックグラウンドで動かすにはデーモン化する。試しにこんな感じで書いてみる。

実行すると以下のようになる。

lockfileの中身。

バックグラウンドで実行。

in, atは,非repeatableなジョブ。repeatableなジョブは,everyやinterval,cronになる。
everyとintervalの違いは,everyはジョブの開始時間を起点にスケジュールし,intervalはジョブ終了時間から次の開始時間までの間隔でスケジュールする(jobs.rbより)。

mutexを使って関連するジョブの制御もできる。

実行すると以下。

他にも,色々とオプションがある(以下のREADMEを参照)

参考:jmettraux/rufus-scheduler · GitHub

  • 追記 2015-7-25

rakeと合わせると使いやすいかもしれない。