2010-01-29 142 views
2

我想要延迟工作来作为耙工作,但对于我的生活,我无法弄清楚我做错了什么。鉴于以下设置:延迟作业耙任务失败

#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作业:清楚,我收到以下错误:

undefined method `handle_asynchronously' for SomeObserver:Class 

即使当我跑步时的测试情况下,我没有得到这个错误或它直接。有任何想法吗?

回答

3

DelayedJob在Delayed::MessageSending::ClassMethods中定义了handle_asynchronously。 DelayedJob会自动将该模块修补到Modulelib/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