Rails延迟工作和图书馆课程

嘿,我们有一个库类(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 # 

知道为什么吗?

Delayed_job总是自动加载ActiveRecord类,但它不知道它在数据库中作为YML编组的其他类型的类(如lib)。 因此,您需要为它们显式触发类加载器。 由于DJ启动了Rails环境,只需在初始化程序中提及任何非AR封送类:

 (config/initializers/load_classes_for_dj.rb) Mixpanel 

一个小问题,我遵循Jonathan的建议,但我需要在类名之前添加一个require ,所以我将它用于load_classes_for_dj.rb

 require 'mixpanel' Mixpanel 

然后它工作正常!