嘿,我们有一个库类(lib / Mixpanel),它调用延迟作业,如下所示:
class Mixpanel
attr_accessor :options
attr_accessor :event
def track!()
..
dj = send_later :access_api # also tried with self.send_later
..
end
def access_api
..
end
问题在于,当我们运行rake作业时:工作:我们收到以下错误:
undefined method `access_api' for #<YAML::Object:0x24681b8>
知道为什么吗?
答案 0 :(得分:15)
Delayed_job总是自动加载ActiveRecord类,但它不知道它在数据库中作为YML编组的其他类型的类(如lib)。因此,您需要为它们显式触发类加载器。由于DJ启动了Rails环境,只需在初始化程序中提及任何非AR封送类:
(config/initializers/load_classes_for_dj.rb)
Mixpanel
答案 1 :(得分:2)
一个小问题,我遵循了Jonathan的建议,但我需要在课程名称之前添加require
,所以我将其用于load_classes_for_dj.rb
:
require 'mixpanel'
Mixpanel
然后它工作正常!