Мне нужно сделать некоторую обработку на заднем плане после того, как пользователь отправил запрос. После выполнения задания я хочу показать пользователю сообщение о том, что ваша работа выполнена.Оказание javascript после delayed_job
До сих пор у меня есть этот
Lib/Работа/custom_job.rb
class CustomJob
def perform
sleep 1 # Here will do the background processing.
ActionView::Base.new('app/views', {}, ActionController::Base.new).render(file: 'teacher/courses/custom')
end
end
custom.js
$(document).ready(function() {
alert("Your job is done.");
});
контроллер
class Teacher::CoursesController < ApplicationController
def index
Delayed::Job.enqueue(CustomJob.new)
@courses = current_teacher.courses.all
end
end
работник начать работу и закончил его без ROR.
[Worker(host:Aragorn pid:3360)] Job CustomJob (id=16) COMPLETED after 1.0635
[Worker(host:Aragorn pid:3360)] 1 jobs processed at 0.9035 j/s, 0 failed
Заранее спасибо.
Извините, но я не понял. Я просто хочу отобразить javascript и не думаю, что потребуется какой-то сторонний сервис или инструмент. – user464
К сожалению, характер отложенной работы, отключенной от опыта пользователей, не позволит вам получить прямой ответ на этот пользователь. Поскольку работа ничего не знает о открытых сеансах и какой пользователь породил задание, вы не можете напрямую ответить на них. Самый простой способ - иметь флаг на объекте, который вы обрабатываете в фоновом режиме, и установить маршрут для проверки состояния этого флага. Затем попросите пользователей опросить этот маршрут каждые 5 секунд, пока флаг не будет в состоянии, показывающем, что оно завершено. Затем вы можете ответить пользователю. –