MobbのCron


このエントリは、Mobb/Repp Advent Calendar の四日目です

Cron Job

Mobbには、Botのための定期実行の仕組みが備わっています。MobbはSinatraをベースとしたBotフレームワークですが、完全にSinatraと同じことをするわけにはいきません。その一つが、Cronです。

Botの重要な役割の一つとして、定期実行が存在します。これはWebアプリケーションという世界には存在しない概念ですが、Botには必ず備わっていて欲しい機能です。例えば、BotをSlackに接続して、毎日決まった時刻に備忘のためのメンションをくれる、とかは重要な機能です。

重要な機能である一方、Webアプリケーションの世界に存在しないこの機能をどう扱おうかという考えはなかなか難しかったので、詳細はこのエントリを読んでください。

http://tolarian-academy.net/mobb-0-3-out-now/

Mobbでは、Cron実行のためにそのままCron Syntaxを採用しました。それに加えて、より人間にわかりやすいCron記述のために、WheneverというGemのパーサーも利用しています。CronとWheneverのどちらが簡単かは人によりますが、多くの人はWheneverのシンタックスのほうが親しみがあると思います。

https://github.com/javan/whenever

詳細はWheneverのドキュメントを参考にしていただければと思いますが、簡単な例をいくつかあげておきます。

タイマーアプリの例

これは、非常に簡単なタイマーアプリの例です。ひとつ注意してほしいのは、このタイマーは正確にn分を図ってくれるわけではなく、最大で+59秒の誤差があります。なぜなら、MobbのCronパーサーの最小の解像度は分であり、秒ではないからです。

最大で約一分の誤差があるタイマーですが、その一方でたったこの十数行のコードでSlack上のタイマーアプリが手に入ります。何かいい感じの応用を思いついて、アイディアを秒でbotにするには良い行数ではないでしょうか?

 


この記事は未分類に投稿されました. このパーマリンクをブックマークする。 コメントを投稿するか、トラックバックをどうぞ: トラックバック URL.

コメントする

あなたのメールは 絶対に 公開されたり共有されたりしません。 * が付いている欄は必須項目です

次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*
*