2010-01-29 3 views
2

J'essaie d'obtenir un travail retardé comme tâche de rake, mais pour la vie de moi, je n'arrive pas à comprendre ce que je fais de mal. Compte tenu de la configuration suivante:Tâche de rattrapage de travail retardée

#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 

Chaque fois que j'exécuter des travaux de rake: clair, je reçois l'erreur suivante:

undefined method `handle_asynchronously' for SomeObserver:Class 

Même si je ne comprends pas cette erreur quand je suis en cas de test ou directement. Des idées?

Répondre

3

DelayedJob définit handle_asynchronously dans Delayed::MessageSending::ClassMethods. DelayedJob automatiquement monkey-patches ce module dans Module dans son lib/delayed_job.rb. Vous aurez probablement plus de chance si vous en avez besoin dans votre tâche Rake:

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