#cron #coffeescript #hubot
#cron #coffeescript #hubot
Вопрос:
Я пытаюсь настроить Hubot для запуска cronjob, но по какой-то причине cronjob с использованием node-cron не запускается. Я прочитал и реализовал несколько разных способов (один пример: https://leanpub.com/automation-and-monitoring-with-hubot/read ) но, похоже, ничего не работает. В настоящее время код, который я использую, является
module.exports = (robot) ->
cronJob = require('cron').CronJob
tz = 'America/Los_Angeles'
pattern = '*/1 * * * *'
cronjob = new cronJob(pattern, everyMinute, null, true, tz)
console.log "reading cron"
room = "#testing"
robot.messageRoom room, 'startup message'
everyMinute = ->
robot.messageRoom '#testing', 'I will nag you every minute'
console.log "every minute should be executed"
Я вижу сообщения о запуске, но сообщения в everyMinute не отображаются в комнате или журнале. Я пробовал разные форматы для шаблона, но безуспешно.
Что странно, так это hubot-cron (https://github.com/miyagawa/hubot-cron ) работает нормально. Я могу настроить задание и увидеть выходное сообщение из cronjob, чтобы я знал, что оно работает. Если я просмотрю исходный код hubot-cron, я увижу
start: (robot) ->
@cronjob = new cronJob(@pattern, =>
@sendMessage robot
, null, false, @timezone)
@cronjob.start()
Это похоже на то, что я делаю, но hubot-cron работает, а мой код — нет. Есть идеи?
Ответ №1:
Оказывается, node-cron не понравилось, как я передавал эту функцию. Похоже, что правильный способ передачи функции в node-cron
module.exports = (robot) ->
cronJob = require('cron').CronJob
tz = 'America/Los_Angeles'
pattern = '* * * * *'
new cronJob(pattern, (->
do everyMinute
), null, true, tz)
everyMinute = ->
console.log "every minute should be executed"
Это работает для меня. Обратите внимание, что «делать каждую минуту» в отдельной строке необходимо, чтобы избежать жалоб coffeescript на конечную запятую.