2

我将作业添加到延迟作业,但是当我运行它时出现 NoMethod 错误

Delayed::Job.last => #Delayed::Backend::MongoMapper::Job _id: BSON::ObjectId('5266f28aa1cba6257b000001'),尝试次数:0,created_at:星期二,2013 年 10 月 22 日 23:47:54 CEST +02 :00, failed_at: nil, handler: "--- !ruby/struct:Delayed::PerformableMethod \nobject: !ruby/object:Module {}\n\nmethod: :notify_all_with_review_reminder_due!\nargs: []\n\n ",last_error:nil,locked_at:nil,locked_by:nil,优先级:75,run_at:周二,2013 年 10 月 22 日 23:47:54 CEST +02:00,updated_at:周二,2013 年 10 月 22 日 23:47:54 CEST + 02:00>

Delayed::Job.last.invoke_job NoMethodError: 未定义方法 `notify_all_with_review_reminder_due!' 对于#模块:0x124781cf0>

看起来他无法序列化正确的对象(它是一个模块)。谷歌搜索我发现了在 config/initializers 中需要模块的建议,但这对我不起作用。

任何的想法?

4

1 回答 1

1

我遇到了类似的问题,在撰写本文时,除了“require”之外,我还没有找到任何其他解决方案,但在我的情况下,我试图将模块类排队,所以我只是用类将它包装起来,现在它可以工作了。前:

module GlobalModule
   def self.some_method
   end
end

Delayed::Job 在调用时失败并出现类似错误GlobalModule::delay.some_method

后:

module GlobalModule
   class Wrapper
     def self.some_method
     end
   end
end

GlobalModule::Wrapper.delay.some_method

于 2015-12-30T08:56:09.113 回答