Не удается получить Delayed :: Job для работы с очень простым классом - PullRequest
0 голосов
/ 21 июля 2011

У меня проблема с использованием Delayed::Job 2.1.4 в очень простом классе:

class C2dmJob < Struct.new(:msg)
  def perform
    # doing something
  end
end

В начале я поместил этот класс в каталог lib, но переместил его в каталог моделей для целей тестирования. При запуске: Delayed::Job.enqueue C2dmJob.new('foo') я получаю следующую запись, хранящуюся в таблице Delayed::Job:

0, обработчик: "---! Ruby / struct: C2dmJob \ nmsg: foo \ n", last_error: nil, run_at: "2011-07-21 10:56:58", locked_at: ноль, failed_at: ноль, locked_by: nil, creation_at: "2011-07-21 10:56:58", updated_at: "2011-07-21 10:56:58">

И задание не выполняется со следующим сообщением об ошибке:

[Worker (host: xxx pid: 2660)] Ошибка C2dmJob с NoMethodError: у вас есть нулевой объект, когда вы этого не ожидали! Вы возможно, ожидал экземпляр массива. Ошибка произошла во время оценка nil.each - 1 неудачная попытка

Что вы думаете не так? Я подозреваю что-то связанное с сериализацией, но понятия не имею, что именно!

Спасибо!

1 Ответ

1 голос
/ 21 июля 2011

причина заключается в совпадении имен классов, DelayedJob ищет выполняет метод в другом классе с тем же именем

...