嘿,我们有一个库类(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 jobs:work: 时,我们得到以下错误:
undefined method `access_api' for #<YAML::Object:0x24681b8>
知道为什么吗?
最佳答案
Delayed_job 总是自动加载 ActiveRecord 类,但它不知道它在数据库中作为 YML 编码的其他类型的类(如 lib)。因此,您需要为它们显式触发类加载器。由于 DJ 启动 Rails 环境,只需在初始化程序中提及任何非 AR 编码类:
(config/initializers/load_classes_for_dj.rb)
Mixpanel
关于ruby-on-rails - Rails 延迟作业和库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2569396/