Delayed_job наконец-то работает для меня (используя драгоценный камень Colleideidea в RoR3) для пары задач. Во-первых, администратор должен загрузить zip-файл изображений в галерею и извлечь каждое изображение, чтобы создать фотообъект, принадлежащий этой галерее. Второе удаление галерей. Эти галереи могут быть довольно большими (550 изображений за ~ 3 минуты), и я хотел бы показать, что галерея все еще обрабатывается или находится в очереди на удаление, даже если она не отображается полностью.
Сейчас я просто использую технику по умолчанию (@ gallery.delay.extract_photos и @ gallery.delay.destroy).
Когда администратор щелкает ссылку извлечения, они направляются на страницу галереи (которая пуста) с сообщением о том, что она обрабатывает галерею. При обновлении страницы периодически отображается список изображений, которые были извлечены до этого момента. Тем не менее, не совсем ясно, когда работа заканчивается, так как обновление один раз очищает флэш-сообщение. По сути, я хотел бы иметь возможность отображать индикатор выполнения, который обновляется каждую секунду или около того с увеличением количества рядом с ним ([====== ] 33/86)
, и / или обновлять галерею для отображения изображений по мере их добавления.
Удаление больших галерей также может занять много времени, поэтому я бы тоже хотел, чтобы это было отложенной работой. Однако галерея все еще существует, когда вы переходите на целевую страницу после ее удаления, поэтому она отображается до тех пор, пока не обновится после того, как она полностью исчезнет. Мне бы хотелось либо пометить его как очередь для удаления, либо показать индикатор выполнения, чтобы он исчез после завершения удаления.
Я искал помощь RoR3 AJAX, но все, что я нашел, было для 2.3.8 и устарело. Кроме того, мне нужно знать, как отследить, выполняется ли еще работа, и я не заметил ничего подобного в документации коллектива. Я понял, так как задания хранятся в таблице, может быть, я мог бы отслеживать это с помощью DelayedJob.thisjob.exists? или что-то в этом роде, но попытка DelayedJob.all в консоли rails просто выдала мне ошибки (даже во время работы задания).
Итак, мой вопрос, вкратце: как я могу отслеживать отложенную работу и отображать ее прогресс любым из этих способов в представлении? [править] Я знаю, что могу проводить активный опрос на страницах галереи, но я не хочу, чтобы это происходило постоянно - просто во время выполнения задания (или по расписанию). Есть ли способ проверить наличие выполняемой или запланированной работы? Потому что я не нашел способ отследить его в представлениях.
Спасибо.