Rails延迟工作和图书馆课程

LMH*_*LMH 8 ruby-on-rails delayed-job

嘿,我们有一个库类(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
Run Code Online (Sandbox Code Playgroud)

问题是当我们运行rake jobs:work:我们得到以下错误:

undefined method `access_api' for #<YAML::Object:0x24681b8>
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

Jon*_*ian 16

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

(config/initializers/load_classes_for_dj.rb)

Mixpanel
Run Code Online (Sandbox Code Playgroud)