hubot-scheduleをリリースしました
hubot-scheduleって?
hubotで動作するスケジューラです。
cron形式と日時形式の2つの形式でメッセージをスケジュール登録できます。
使い方
コマンド一覧
Hubot> hubot help schedule Hubot schedule [add|new] "<datetime pattern>" <message> - Schedule a message that runs on a specific date and time Hubot schedule [add|new] "<cron pattern>" <message> - Schedule a message that runs recurrently Hubot schedule [cancel|del|delete|remove] <id> - Cancel the schedule Hubot schedule [upd|update] <id> <message> - Update scheduled message Hubot schedule list - List all scheduled messages
利用例
Hubot> hubot schedule add "2015-01-16 10:00" スクリプトをリリースするよ! 6738: Schedule created Hubot> hubot schedule add "0 10 * * 1-5" 朝のコーヒー淹れ忘れないでね :) 9735: Schedule created Hubot> hubot schedule list 6738: [ Fri Jan 16 2015 10:00:00 GMT+0900 (JST) ] #Shell スクリプトをリリースするよ! 9735: [ 0 10 * * 1-5 ] #Shell 朝のコーヒー淹れ忘れないでね :) Hubot> hubot schedule update 6738 スクリプトをリリースしてみんなにシェアしよう! 6738: Scheduled message updated Hubot> hubot schedule list 6738: [ Fri Jan 16 2015 10:00:00 GMT+0900 (JST) ] #Shell スクリプトをリリースしてみんなにシェアしよう! 9735: [ 0 10 * * 1-5 ] #Shell 朝のコーヒー淹れ忘れないでね :) (2015-01-16 10:00:00になると以下が投稿され、スケジュールから削除される) スクリプトをリリースしてみんなにシェアしよう! Hubot> hubot schedule list 9735: [ 0 10 * * 1-5 ] #Shell 朝のコーヒー淹れ忘れないでね :) Hubot> hubot schedule del 6738 6738: Schedule canceled Hubot> hubot schedule list Message is not scheduled
なんで作ったの?
hubotのスケジューラは、探してみた限りだと以下のものがあります。
- miyagawa/hubot-cron · GitHub
- cron設定にしたがってメッセージを投稿する
- evansolomon/hubot-chronos · GitHub
- cron設定にしたがってメッセージを投稿する
- hubot-scripts/remind.coffee at master · github/hubot-scripts · GitHub
- インターバル指定(時分秒)でメッセージを投稿する
- bouzuya/hubot-timer · GitHub
- インターバル指定(秒)でメッセージを投稿する
- kenjiskywalker/hubot-at · GitHub
- インターバル指定(時分)でメッセージを投稿する
cronでリピートするかインターバル指定のものしかなくて、指定日時ピッタリに一度だけ動くスケジューラが欲しくて作りました。
hubot-cronとかぶってる?
cron指定の方はもろかぶりです、すみません(;´Д`)
hubot-cronは内部的にはncb000gt/node-cron · GitHubを使っていますが、こちらはmattpat/node-schedule · GitHubを利用しています。
node-scheduleが日時指定だけでなくcron指定にも対応していたので、そちらも合わせて対応してみた感じです。
cron指定と日時指定ができるなら、両方一緒に管理出来た方がいいでしょうし。
内部実装もhubot-cronをものすごく参考にさせて頂きました!><
hubot-cronとの違い
- 日時指定をサポート
- コマンドをhubot schedule xxxで統一したので覚えやすい(hubot-cronはhubot list jobsとかhubot new jobみたいに動詞が頭にきてたので覚えづらかった)
- cron指定時の月は一般的な1〜12(hubot-cronは0〜11指定だった)
- コマンドを少し追加
- スケジュールはそのままで、メッセージだけ変更できるupdateコマンド
- Redis再起動でジョブが重複登録される問題にも対応
- 詳しくは hubot-brainやhubot-cronまわりの問題点整理 - matsukaz's blog で
- hubot-cronも、プルリクを投げさせて頂いてすでにmasterブランチに取り込まれているので、次のリリースからは解決してると思います。
あたり。
細かい話だと、hubot-brainの保存にはアクセサメソッドをちゃんと利用してるとか。
逆に、hubot-cronはタイムゾーンをサポートしていますが、こちらはまだしてないです。
なのでcronの時間はサーバが起動している環境に依存してます。
時間指定の方は、2015-01-15 10:00-08:00みたいにISOオフセットも合わせて指定すればいいかと。
というわけで
社内でも使い始めたばかりなので、何か不具合などありましたらぜひぜひ教えて下さい!
ご要望もお待ちしております。
BrainWarsのDL数が1000万超えましたぁ!ヽ(=´▽`=)ノ