Где я должен разместить фоновые процессы в рельсах?

Я создаю проект Rails с заданием типа cron, которым я управляю с помощью Rufus Scheduler. У меня есть два вопроса о том, как правильно настроить это в Rails:

  1. Где лучше разместить код задания?
  2. Где я должен разместить код Rufus, чтобы запланировать задание? Как я должен начать это?

person abeger    schedule 13.01.2010    source источник


Ответы (1)


Для управления планировщиком я бы создал config/initializers/task_scheduler.rb:

task_scheduler = Rufus::Scheduler.start_new  

task_scheduler.every("1m") do  
   Something.to_do! # Do something every minute! 
end

Что касается кода Something.to_do, это зависит от того, что он делает. Возможно, это модель данных, и она должна находиться в каталоге app/models, но если это что-то более общее, вы можете поместить ее в каталог lib/. Если у вас есть несколько запланированных задач, вы можете создать каталог app/scheduled_tasks, но это может быть излишним для одного файла.

person csexton    schedule 13.01.2010
comment
Хотя это решение простое, возникнут проблемы при развертывании приложения rails на многопроцессорном сервере, таком как unicorn или пассажир, ваша работа может выполняться несколько раз. - person Antony; 02.10.2013