在每个schedule.rb

时间:2018-04-14 01:11:10

标签: ruby cron whenever

我试图从这样的时间表中调用一个方法:

schedule.rb

require '../app/bots/task_bot'

every 1.minute do
    runner 'TaskBot.test_robot'
end

我有一个名为TaskBot的类放在目录app/bots/task_bot.rb中。它看起来像这样:

task_bot.rb

class TaskBot
    def test_robot()
        logger = Logger.new('log/robot.log')
        logger.debug("TEST")
    end
end

然后我运行了命令whenever --update-crontab并验证了使用crontab -l更新了crontab。 Crontab已更新,但我没有看到Logger每分钟都在执行。我是新来的,我在这里错过了一些东西吗?

1 个答案:

答案 0 :(得分:1)

test_robot实例方法,但您尝试将其作为方法执行;为了使它工作,你有两个选择:

  1. 首先创建TaskBot对象,然后调用test_robot

    every 1.minutes do
      runner 'TaskBot.new.test_robot'
    end
    
  2. 创建方法,不要修改计划代码(我更喜欢这种方式):

    class TaskBot
      def self.test_robot
        logger = Logger.new('log/robot.log')
        logger.debug("TEST")
      end
    end