Использование delayed_job в не-ActiveRecord классе - PullRequest
0 голосов
/ 17 декабря 2010

Я пытаюсь использовать handle_asynchronously в методе класса согласно следующему:

class MyClass
  def publish_stream(opts={})
    # . . .
  end
  handle_asynchronously :publish_stream
end

Когда delayed_job пытается выполнить, выдается следующее исключение:

NoMethodError: undefined method `publish_stream_without_send_later' for #<YAML::Object:0xbb52b00>

(Обратите внимание, что я заменил фактическое имя метода на "my_method" выше.)

Я считаю, что исключение происходит, потому что класс, определяющий этот метод, не является производным от ActiveRecord::Base; вместо этого он просто получен из Object. Что я могу сделать, чтобы решить эту проблему?

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

После некоторого копания оказывается, что задача rake delayed_job должна загружать что-то в неправильном порядке. В консоли все работало нормально. Решением было сделать следующее вручную в инициализаторе:

require 'my_class'

где "my_class" - это имя файла класса.

1 голос
/ 17 декабря 2010

My думаю, заключается в том, что DelayedJob пытается сериализовать объект, над которым вы работаете, и не может воссоздать объект из этого.

...