Cron и Ruby: использование Whenever
Библиотека Whenever предоставляет простой синтаксис для определения cron задач, позволяет вывести или записать crontab файл. Whenever разработана с учетом использования с Rails приложениями и развертывания через Capistrano, но может использоваться и независимо.
Для использования нужно установить гем whenever:
В случае Rails приложения можно добавить в config/environment.rb строку
и установить этот гем командой rake gems:install.
Теперь можно сгенерировать пустой конфигурационный файл config/schedule.rb командой wheneverize:
wheneverize .
Пример различных вариантов синтаксиса конфигурационного файла Whenever:
config/schedule.rb
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 # Доступно множество сокращений: :hour, :day, :month, :year, :reboot
runner "SomeModel.ladeeda"
end
every :sunday, :at => '12pm' do # Можно использовать любой день недели или :weekend, :weekday
runner "Task.do_something_great"
end
Whenever предоставляет возможность запускать:
- runner -
script/runnerRails приложения, - rake - Rake задачи,
- command - любые команды операционной системы.
Консольная команда whenever предназначена для генерации crontab:
whenever
Интеграция Whenever и Capistrano может осуществляться следующей задачей Capistrano:
namespace :deploy do
desc 'Update the crontab file'
task :update_crontab, :roles => :db do
run "cd #{current_path} && whenever --update-crontab #{application}"
end
end
Related posts: