Я пытался заставить DelayedJob запустить некоторые пользовательские методы в фоновом режиме.Для этого тестового примера я определил следующий метод в помощнике:
def test_case
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "itworked@eureka.com"
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 = "itworked@eureka.com"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.delay.save
end
Это создает DJ успешно и, как и ожидалось, загружает обработчик, указывающий детали (например, u.name => "JimBob" ...).Но когда задание запущено, новый пользователь не создается.Я даже пытался переключить его просто для того, чтобы уничтожить пользователя (хотя, возможно, создать пользователя с DJ может быть сложно, учитывая способ обработки полей пароля), но это не сработало.
ТАКАЯ длинная историяshort:
- Как заставить DJ правильно запускать фоновые методы?
- Как получается, что в случаях, когда создаются отложенные задания, которые выглядят просто, никаких изменений не вноситсябаза данных?