Pergunta

Ei, temos uma aula de biblioteca (lib/mixpanel) que chama o trabalho atrasado da seguinte forma:

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

O problema é que, quando executamos trabalhos de ancinho: trabalho: obtemos o seguinte erro:

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

Alguma ideia do porquê?

Foi útil?

Solução

Touched_job sempre automaticamente as classes ActiveRecord, mas não conhece outros tipos de classes (como a lib) que ele organizou o banco de dados como YML. Portanto, você precisa acionar explicitamente o carregador de classe para eles. Como o DJ inicia o ambiente do Rails, basta mencionar quaisquer aulas de não-AAR em um inicializador:

(config/initializers/load_classes_for_dj.rb)

Mixpanel

Outras dicas

Um pequeno petcha, eu segui a sugestão de Jonathan, mas eu precisava adicionar um require antes do nome da classe, então eu usaria isso para load_classes_for_dj.rb:

require 'mixpanel'
Mixpanel

Então funcionou bem!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top