附表Rails的任务在某一时间运行(Schedule Rails Task to run at a

2019-09-23 01:24发布

我目前正在创建一个Rails应用程序,并想了解如何安排某些任务在特定时间运行。

对于例如,一个管理员想发送电子邮件给他的用户在上午8:00在早晨和不想早起就是为了发送该电子邮件。 因此,他/她将要安排的任务当时发送电子邮件。

那么,有没有一种方式,或者更好的是一块宝石,它允许将计划任务在特定时间运行? 谢谢!

Answer 1:

在这里我首选的方案是每当宝石。

有了它,你有schedule.rb文件,指定当某些事情应该做的事,包括运行rake任务,执行方法,甚至执行任意shell命令:

例如schedule.rb文件,无耻地从每当自述复制

every 3.hours do
  runner "MyModel.some_process"
  rake "my:rake:task"
  command "/usr/bin/my_great_command"
end

every 1.day, :at => '4:30 am' do
  runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end

every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
  runner "SomeModel.ladeeda"
end

every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday
  runner "Task.do_something_great"
end

every '0 0 27-31 * *' do
  command "echo 'you can use raw cron syntax too'"
end

# run this task only on servers with the :app role in Capistrano
# see Capistrano roles section below
every :day, :at => '12:20am', :roles => [:app] do
  rake "app_server:task"
end

我用每当多项任务,包括发送电子邮件,每天。



文章来源: Schedule Rails Task to run at a certain time