Rails延迟工作&图书馆班

时间:2010-04-02 21:51:19

标签: 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

问题在于,当我们运行rake作业时:工作:我们收到以下错误:

undefined method `access_api' for #<YAML::Object:0x24681b8>

知道为什么吗?

2 个答案:

答案 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

然后它工作正常!