lest, just lest

Заметки о web-разработке, администрировании Linux и настройке Mac OS X

Cron и Ruby: использование Whenever

без комментариев

Библиотека Whenever предоставляет простой синтаксис для определения cron задач, позволяет вывести или записать crontab файл. Whenever разработана с учетом использования с Rails приложениями и развертывания через Capistrano, но может использоваться и независимо.

Для использования нужно установить гем whenever:

gem install whenever

В случае Rails приложения можно добавить в config/environment.rb строку

config.gem 'whenever', :lib => false, :source => 'http://gemcutter.org/'

и установить этот гем командой rake gems:install.

Теперь можно сгенерировать пустой конфигурационный файл config/schedule.rb командой wheneverize:

cd /my/rails/app
wheneverize .

Пример различных вариантов синтаксиса конфигурационного файла Whenever:

config/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 # Доступно множество сокращений: :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/runner Rails приложения,
  • rake - Rake задачи,
  • command - любые команды операционной системы.

Консольная команда whenever предназначена для генерации crontab:

cd /my/rails/app
whenever

Интеграция Whenever и Capistrano может осуществляться следующей задачей Capistrano:

after 'deploy:symlink', 'deploy:update_crontab'

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:

  1. Развертывание Symfony приложения с Capistrano и Subversion
  2. Использование Sinatra внутри Rails Metal
  3. Capistrano и deploy проектов
  4. CKEditor в Ruby on Rails c загрузкой файлов через SWFUpload
  5. Hello world с помощью Ruby, Sinatra и Haml

Автор: lest

Март 17, 2010 в 15:23

Опубликовано в ruby

Метки: , , ,

Leave a Reply