开发者

Using delayed_job on a non-ActiveRecord class

开发者 https://www.devze.com 2023-01-31 07:56 出处:网络
I\'m attempting to use handle_asynchronously on a me开发者_C百科thod of a class, as per the following:

I'm attempting to use handle_asynchronously on a me开发者_C百科thod of a class, as per the following:

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

When delayed_job attempts to execute, it throws the following exception:

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

(Note that the I replaced the actual method name with "my_method" above.)

I believe the exception is occurring because the class defining this method is not derived from ActiveRecord::Base; instead, it's simply derived from Object. What can I do to resolve this?


My guess is that DelayedJob tries to serialize the object you are working on, and it cannot recreate the object from that.


After some digging, it turns out that the delayed_job rake task must be loading something in the wrong order. It worked fine in the console. The solution was to do the following manually in an initializer:

require 'my_class'

where "my_class" is the filename of the class.

0

精彩评论

暂无评论...
验证码 换一张
取 消