Заявка
Я пишу приложение, которое запускает планировщик и извлекает записи после того, как кто-то сохраняет запись в базе данных.
Инициализаторы / scheduler.rb
require 'rufus-scheduler'
SCHEDULER = Rufus::Scheduler.new(:lockfile => ".rufus-scheduler.lock")
unless SCHEDULER.down?
# SCHEDULER.every '3m', :tags => 121 do
# Rails.logger.info "Ping!!"
# Rails.logger.flush
# end
end
Контроллеры / abc_controller.rb
class AbcController < ApplicationController
def new
obj = ModelClass.new(params)
if obj.save
SCHEDULER.every obj.frequency do
# run a job
end
end
end
end
Задача
Задание запускается с контроллера, но проблема в том, что при перезапуске сервера задание теряется.
Я прочитал файл readme для rufus-scheduler, и упоминается, что он не является функцией. Но все же я хочу знать, есть ли какое-либо решение для этого (сохранение заданий после перезагрузки сервера) или мне нужно изменить свой подход?
P.S. Я искал его при переполнении стека, но мне жаль, если я что-то пропустил или пропустил аналогичный вопрос.
EDIT
Для всех тех, кто хочет запустить планировщик из самого контроллера, используя params, подумайте о стратегии сохранения данных в БД (временная таблица или что-то в этом роде), если это возможно, и затем связывание события create с планированием. Перепланируйте задания по инициализации планировщика, т. Е. Перезагрузите сервер, как указано в ответе @jmettraux. Надеюсь, это поможет.