Rails tardia aula de emprego e biblioteca
-
24-09-2019 - |
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ê?
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!