Pergunta

Estou tentando conseguir um emprego atrasado para trabalhar como uma tarefa de rake, mas para a minha vida, não consigo descobrir o que estou fazendo de errado. Dada a seguinte configuração:

#config/environment.rb
Rails::Initializer.run do |config|
  config.gem 'delayed_job'
end

#Rakefile
begin
    require 'delayed/tasks'
rescue LoadError
    STDERR.puts "Run `rake gems:install` to install delayed_job"
end

#Observer
class SomeObserver < ActiveRecord::Observer
   def foo(bar)
   end
   handle_asynchronously :foo
end

Sempre que executo trabalhos de ancinho: limpe eu recebo o seguinte erro:

undefined method `handle_asynchronously' for SomeObserver:Class

Mesmo que eu não receba esse erro quando estou executando os casos de teste ou diretamente. Alguma ideia?

Foi útil?

Solução

Define o atraso handle_asynchronously dentro Delayed::MessageSending::ClassMethods. Touchedjob automaticamente deplações de macaco esse módulo em Module em seu lib/delayed_job.rb. Você provavelmente terá mais sorte exigindo isso em sua tarefa de ancinho:

#Rakefile
begin
  require 'delayed_job'
  require 'delayed/tasks'
rescue LoadError
  STDERR.puts "Run `rake gems:install` to install delayed_job"
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top