/ / Schedule Rails Задача да се изпълни в определено време - ruby-on-rails-3, планирани задачи

График на релсите Задачата да се изпълнява в определено време - руби-на-релси-3, планирани задачи

Понастоящем създавам приложение за релси и бих искал да разбера как да планирам определени задачи да се изпълняват в определено време.

За напр. Администраторът би искал да изпраща имейли на своите потребители в 8:00 сутринта и не иска да се събужда рано, само за да изпрати този имейл. Затова той / тя би искал да насрочи задачата да изпраща имейли по това време.

Така че, има ли начин, или още по-добре бижу, който позволява задачите да се планират да се изпълняват в определен момент? Благодаря!

Отговори:

11 за отговор № 1

Предпочитаното ми решение тук е Когато и да е скъпоценен камък.

С него имате schedule.rb файл, който посочва кога трябва да се направят някои неща, включително изпълняването на задачи с рейк, методите за изпълнение или дори изпълнението на произволни команди на черупката:

Пример за файл с график. Безсмислено копиран от readme:

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

Използвам Всеки път за редица задачи, включително изпращане на ежедневни имейли.