Slackで定期的にRubotyに仕事をさせる
ChatOpsの一環としてSlackにRubotyを常駐させているのだが、Rubotyに定期的にタスクを実行させたいことがあった。
最初はruby-cronを使ってみたのだが、Slackだとうまく動かなかった。
具体的にはジョブの登録はできるのだがジョブの実行(通知)がされない。
うまくいかなかったのでSlackのリマインダー機能を使ってみることにした。
Slackのリマインダー機能を使うと Reminder:
と言うプレフィックスが入るのでRubotyが反応せず、こちらもうまくいかなかった。
最終的にはcronでスクリプトを定期実行させることにした。
Slackに通知するスクリプトを作って、それをcronで定期的に実行させる。
メッセージを拾ったRubotyがタスクを実行するといった感じだ。
サンプルコード
1 | require "faraday" |
これでRubotyに定期的に仕事をさせることができるようになった。