Я пытался заставить DelayedJob запускать некоторые определенные пользователем методы в фоновом режиме. Для этого теста я определил следующий метод в помощнике:Delayed_job не запускается Определенный пользователем метод
def test_case
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "[email protected]"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.save
end
Затем в действии контроллера, я определяю:
def action_name
#whatever it does outside of this
test_case
end
Это приводит к test_case создать новый пользователь, когда действие здесь запустить. Если я пытаюсь отложить работу, я могу изменить его на:
def action_name
#whatever it does outside of this
self.delay.test_case
end
Это вызывает delayed_job быть создан, но с определенными признаками, что я делаю это неправильно: в частности, обработчик в таблице delayed_job содержит все информация, загруженная в другое место в файле action_name (в этом случае очень большой файл размером около 50000 символов), а не просто простой обработчик, указывающий на запуск test_case или что-то в этом роде.
Если изменить это вокруг, чтобы держать тестирование, я пытался сделать:
def action_name
#whatever it does outside of this
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "[email protected]"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.delay.save
end
Это создает DJ успешно и, как и ожидалось, он загружает обработчик с указанием деталей (например, u.name => "JimBob" ...). Но когда задание запускается, новый пользователь не создается. Я даже пытался переключить его, чтобы уничтожить пользователя (хотя, может быть, создание пользователя с DJ может быть затруднено, учитывая, как обрабатываются поля пароля), но это не работает.
ТАК Короче говоря:
- Как я могу получить DJ запустить методы фона правильно?
- Как получается, что в случае создания замедленных заданий, которые выглядят просто, никаких изменений в базе данных не происходит?
Что такое объект и имя объекта метода DJ? – AMIT
@AMIT это просто аббревиатура от «Задержка задания». – Roshan