Отложенная задача Rake не удалась

Я пытаюсь заставить отложенную работу работать в качестве грабли, но для жизни я не могу понять, что я делаю неправильно. Учитывая следующую настройку:

#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

Всякий раз, когда я запускаю задания rake:clear, я получаю следующую ошибку:

undefined method `handle_asynchronously' for SomeObserver:Class

Хотя я не получаю эту ошибку, когда запускаю тестовые примеры или напрямую. Любые идеи?


person Paul McMahon    schedule 29.01.2010    source источник


Ответы (1)


DelayedJob определяет handle_asynchronously в Delayed::MessageSending::ClassMethods. DelayedJob автоматически вставляет этот модуль в Module в своем lib/delayed_job.rb. Скорее всего, вам повезет больше, если вам потребуется это в вашей задаче Rake:

#Rakefile
begin
  require 'delayed_job'
  require 'delayed/tasks'
rescue LoadError
  STDERR.puts "Run `rake gems:install` to install delayed_job"
end
person James A. Rosen    schedule 29.01.2010