У меня две модели: Расписание и Задача. Задача принадлежит_описанию и расписанию has_many задач. У меня есть вложенная форма для задачи, которая использует javascript для динамического создания дополнительных форм задач, нажав кнопку «добавить задачу». Я пытаюсь использовать rufus_scheduler, чтобы сделать это так, чтобы задача имела конечную дату и время окончания ввода пользователем. Когда задача завершена, она должна просто напечатать «yo yo yo» на сервере.Не могу понять, как сделать планировщик rufus работать с .at вместо .in
Я был успешно в состоянии иметь первую задачу полностью в интервале секунд со следующим кодом:
def set_schedule
scheduler = Rufus::Scheduler.new
scheduler.in self.tasks.first.timeframe do
puts 'yo yo yo'
end
end
В приведенном выше коде, временные рамки представляет собой целое поле, которое пользователь вводит с заданным числом секунд, перед которыми должно выполняться задание.
Проблема в том, что в приведенном выше коде используется интервал, и я хочу использовать точную дату и время. Поэтому я изменил таймфрейм на строку и дал пользователю ввести дату в этом формате: '12/18/2013 '. Вот что я пробовал:
def set_schedule
scheduler = Rufus::Scheduler.new
scheduler.at (self.tasks.first.timeframe + " " + self.tasks.first.complete_time.to_s + " EST")do
puts 'yo yo yo'
end
end
Просто чтобы быть ясно, таймфрейм строки, которая состоит из даты и complete_time этого поля времени, которое состоит из времени задача должна закончиться.
Этот код не работает. «yo yo yo» по-прежнему печатается, но сразу же печатается.
Я бегу рельсы на webrick с базы данных postgres. Я использую Ruby on Rails 4 и Ruby 2. Буду признателен за любую помощь. Благодаря!
UPDATE:
я понял две ошибки в своем коде. complete_time автоматически конвертировался в нечитаемый формат. Я исправил это, изменив complete_time в строку. Кроме того, я понял, что мой аргумент для метода .at не был в кавычках. Я исправил это. Тем не менее, я все еще испытываю такую же проблему. Вместо того, чтобы ждать, пока наступит время, чтобы положить «yo yo yo», он сразу же устанавливает его. Вот новый код:
def set_schedule
scheduler = Rufus::Scheduler.new
scheduler.at ("#{self.tasks.first.timeframe} #{self.tasks.first.complete_time} EST")do
puts 'yo yo yo'
end
end
Метод scheduler.at идет к серверу, как это:
scheduler.at("12/03/2013 12:33:00 EST")
Ofcourse времени и даты изменения углубляющегося на входе пользователей, приведенный выше код только в последний раз я запустил его.
Здравствуйте, проблема решена сейчас? Если нет, то в чем проблема? – jmettraux
Одна вещь: вы понимаете, что вы создаете планировщик каждый раз, когда вызывается #set_schedule? Это один новый поток, созданный для каждого вызова #set_schedule, через некоторое время ваше приложение будет раздавлено под нагрузкой. Лучше инициализировать один Планировщик и использовать его каждый раз. См. Https: //gist.github.com/jmettraux/f298b092fa8c79b6c3c7 – jmettraux