8

次のように遅延ジョブを呼び出すライブラリ クラス (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>

理由はありますか?

4

2 に答える 2

16

Delayed_job は常に ActiveRecord クラスを自動ロードしますが、DB で YML としてマーシャリングした他のタイプのクラス (lib など) については認識しません。そのため、クラスローダーを明示的にトリガーする必要があります。DJ は Rails 環境を起動するので、初期化子で AR マーシャリングされていないクラスを指定するだけです。

(config/initializers/load_classes_for_dj.rb)

Mixpanel
于 2010-04-03T15:31:07.063 に答える
2

ちょっとした落とし穴、ジョナサンの提案に従いましたがrequire、クラス名の前に a を追加する必要があったため、これを に使用しますload_classes_for_dj.rb

require 'mixpanel'
Mixpanel

そしたらうまくいきました!

于 2012-02-15T18:29:39.740 に答える