Gra*_*man 17 ruby cron ruby-on-rails whenever
我有一个包含大量任务的应用程序,每天我都想运行一个cron作业,为数据库中的每个Task创建一个DayTask.任务has_many DayTasks和这些daytasks是用户每天将要检查的.我正在使用随时随地的宝石,但它似乎根本没有运行.有任何想法吗?
配置/ schedule.rb
every 1.day, :at => "12:01am" do
runner "Task.generate_tasks_for_day"
end
Run Code Online (Sandbox Code Playgroud)
Task.rb
def generate_tasks_for_day
Task.all.each do |task|
task.day_tasks.create(:target_date => Date.today)
end
end
Run Code Online (Sandbox Code Playgroud)
运行'when命令'的结果
1 0 * * * /bin/bash -l -c 'cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production '\''Task.generate_tasks_for_day'\'''
Run Code Online (Sandbox Code Playgroud)
注意:每次我想测试运行时,我一直在更改config/schedule.rb中的时间.
dam*_*ser 67
最后,我已经解决了如何运行宝石.它在生产方面做得很好,但不是在开发模式下(我认为在开发模式下工作得很好,你必须做一些技巧).
然后,这些是要做的过程:
scheduler.rb
文件ssh
)whenever
whenever --update-crontab
sudo service cron restart
crontab -l
而已!
就个人而言,我更喜欢直接从服务器设置我的crons:
crontab -e
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"
归档时间: |
|
查看次数: |
19516 次 |
最近记录: |