Rails Delayed Job & Library Class - PullRequest
       15

Rails Delayed Job & Library Class

8 голосов
/ 03 апреля 2010

Эй, у нас есть библиотечный класс (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

Проблема в том, что когда мы запускаем грабли: работа: мы получаем следующую ошибку:

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

Есть идеи почему?

Ответы [ 2 ]

15 голосов
/ 03 апреля 2010

Delayed_job всегда автоматически загружает классы ActiveRecord, но он не знает о других типах классов (таких как lib), которые он маршалировал в БД как YML. Итак, вам нужно явно запустить загрузчик классов для них. Поскольку DJ запускает среду Rails, просто укажите все не-AR маршалированные классы в инициализаторе:

(config/initializers/load_classes_for_dj.rb)

Mixpanel
2 голосов
/ 15 февраля 2012

Небольшая ошибка, я последовал совету Джонатана, но мне нужно было добавить require перед именем класса, поэтому я бы использовал это для load_classes_for_dj.rb:

require 'mixpanel'
Mixpanel

Тогда все работало нормально!

...