【问题标题】:Cron job not working in Whenever gem in developmentCron 工作在开发中的任何时候都不起作用
【发布时间】:2019-02-24 07:50:28
【问题描述】:

我已经在我的模型中编写了这个方法:-

class Message < ActiveRecord::Base
  def self.create_message
    ShortMessage.create(message: "cron job")
    puts "created"
  end
end

然后我更新了 schedule.rb 文件:-

every 1.minute do
  runner "Message.create_message", :environment => "development"
end

最后执行了所有这些指令:-

whenever --update-crontab
tail -f /var/log/syslog | grep CRON

但从控制台检查时,我的数据库中没有创建任何内容ShortMessage.last

【问题讨论】:

  • 什么是ShortMessage?对模型的任何验证?你的日志文件是什么样子的?
  • 不,它只是表名,即 short_messages。
  • 通过crontab -l检查它是否正在运行
  • 请附上crontab -lwhich ruby输出
  • Message 类的跑步者名称是什么?是message.rb 吗?

标签: ruby-on-rails ruby whenever


【解决方案1】:

Cron 不会初始化完整会话,如果您使用 rvm 之类的 ruby​​ 版本管理器 - 它可能无法加载,在 cron 中使用您需要 ruby​​ 包装器或加载 rvm,有关更多详细信息,请查看 rvm documentation about cron,命令cron 看起来像

cd (working-dir) && /usr/local/rvm/wrappers/default/bundle bin/rails runner -e development '\''Message.create_message'\'''

【讨论】:

    【解决方案2】:

    清除现有的 cron 作业。

    crontab -r
    

    使用环境更新 cronjob。

    whenever --update-crontab --set environment='development'
    

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2019-11-21
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2018-03-23
      • 2011-11-24
      相关资源
      最近更新 更多