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。 它在生产方面做得很好,但不是在开发模式下(我认为在开发模式下工作得很好,你必须做一些技巧)。
然后,这些是要做的过程:
- 安装gem
- 编写
scheduler.rb
文件 - 推送到远程服务器
- 登录到远程服务器(例如使用
ssh
) - 通过在终端中运行来查看是否有好的上传时间:
- 每当crontab运行
whenever --update-crontab
更新:whenever --update-crontab
- 重启服务器crontab(例如在Ubuntu服务器中):
sudo service cron restart
- 检查crontab是否在服务器上实现良好:
crontab -l
而已!
就个人而言,我更喜欢直接从服务器设置我的crons:
- 编辑crontab:
crontab -e
- 附加我的cron(例如每天凌晨5点 – 对于非基于Linux的服务器可能会有所不同):
0 5 * * * /bin/bash -l -c 'cd /path_to_my_app/current && RAILS_ENV=production bundle exec rake my_cron_rake'
- 检查是否实现良好:
crontab -l
- 完成
您必须通过运行以下命令在crontab中实际注册作业:
whenever --update-crontab
此外,如果您尝试在本地运行作业,请在您的任务中添加:environment => "development"
runner "MyTask.some_action", :environment => "development"
尝试直接从终端执行MAILTO=your@emailadress.com
generated命令或MAILTO=your@emailadress.com
添加到您的crontab。