Cron工作不在Whenever gem工作

我有一个包含大量任务的应用程序,每天我都想运行一个cron作业,为数据库中的每个Task创建一个DayTask。 任务has_many DayTasks和这些daytasks是用户每天将要检查的。 我正在使用随时随地的gem,但它似乎根本没有运行。 有任何想法吗?

配置/ schedule.rb

every 1.day, :at => "12:01am" do runner "Task.generate_tasks_for_day" end 

Task.rb

  def generate_tasks_for_day Task.all.each do |task| task.day_tasks.create(:target_date => Date.today) end end 

运行’when命令’的结果

 1 0 * * * /bin/bash -l -c 'cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production '\''Task.generate_tasks_for_day'\''' 

注意:每次我想测试运行时,我一直在更改config / schedule.rb中的时间。

最后,我已经解决了如何运行gem。 它在生产方面做得很好,但不是在开发模式下(我认为在开发模式下工作得很好,你必须做一些技巧)。

然后,这些是要做的过程:

  1. 安装gem
  2. 编写scheduler.rb文件
  3. 推送到远程服务器
  4. 登录到远程服务器(例如使用ssh
  5. 通过在终端中运行来查看是否有好的上传时间:
  6. 每当crontab运行whenever --update-crontab更新: whenever --update-crontab
  7. 重启服务器crontab(例如在Ubuntu服务器中): sudo service cron restart
  8. 检查crontab是否在服务器上实现良好: crontab -l

而已!

就个人而言,我更喜欢直接从服务器设置我的crons:

  1. 编辑crontab: crontab -e
  2. 附加我的cron(例如每天凌晨5点 – 对于非基于Linux的服务器可能会有所不同):
    0 5 * * * /bin/bash -l -c 'cd /path_to_my_app/current && RAILS_ENV=production bundle exec rake my_cron_rake'
  3. 检查是否实现良好: crontab -l
  4. 完成

您必须通过运行以下命令在crontab中实际注册作业:

whenever --update-crontab

此外,如果您尝试在本地运行作业,请在您的任务中添加:environment => "development"

runner "MyTask.some_action", :environment => "development"

尝试直接从终端执行MAILTO=your@emailadress.com generated命令或MAILTO=your@emailadress.com添加到您的crontab。