2011-03-29 48 views
2

我试图在我的Rails 3应用程序中使用延迟作业,但继续打到一个障碍。作业保持失败,错误:Job failed to load: uninitialized constant CrawlJob.作业未能加载:未初始化的常量与延迟作业和Rails 3

我发现了一些其他SO线程,并遵循建议那里无济于事。这是相关的代码。

application.rb中

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

...

module Decurate 
    class Application < Rails::Application 

...

config.autoload_paths += %W(#{config.root}/lib) 
    config.autoload_paths += Dir["#{config.root}/lib/**/"] 

...

end 
end 

/lib/crawl_job.rb

class CrawlJob < Struct.new(:merchant_id,:ec2,:s3) 
    def perform 

...

end 
end 

/lib/tasks/cron.rake

merchants = Store.all.collect{ |store| store[:merchant_id] } 
    merchants.each do |merchant_id| 
    queue.push merchant_id 
    end 
    merchants.each do |merchant_id| 
    Delayed::Job.enqueue CrawlJob.new(merchant_id,@ec2,@s3) 
    end 

回答

3

对不起大家,似乎我只是忘了重启我的工作进程,因为我搞乱了autoload_paths。作为参考,上述安排应该工作。只要记住要启动一个新的工人rake jobs:work

相关问题