2016-01-21 42 views
2

我使用的是Rails 4.1.5和Sidekiq 3.3.0。我已经设定此工作人员每隔一分钟后重复执行一次。它在本地工作正常,但在生产环境和登台环境中引发错误。尽管工作人员正在完成工作,保存记录只会在一分钟后抛出错误。Sidekiq WARN:未初始化的常量ViewDBWorker Rails 4

2016-01-21T10:50:00.594Z 5173 TID-osv5dzz5o WARN: uninitialized constant ViewDBWorker 

应用程序/工人/ view_db_worker.rb:

class ViewDBWorker 
    include Sidekiq::Worker 
    include Sidetiq::Schedulable 

    recurrence { hourly.minute_of_hour((0..59).to_a) } if Rails.env.staging? || Rails.env.production? 

    def perform 
     begin   
     do_process() 
     rescue => e 
     puts "Error message: #{e.message}"  
     end 
    end 

    def do_process() 
    puts 'The worker !!' 
    end 
end 

application.rb中

config.eager_load_paths += %W(#{config.root}/app/workers) 

回答

4

你并不需要添加目录加载路径在application.rb如果你定义你的工人导轨文件夹中的app/*文件夹。 Rails会自动加载这些文件。

如果您在其他地方定义了您的课程,例如在lib/worker/*文件夹,然后你需要添加到您的application.rb

config.autoload_paths += %W(#{config.root}/lib/workers) 
config.eager_load_paths += %W(#{config.root}/lib/workers) 

这个随着这个您的问题可能运行sidekiq的过程。你可以看到你的sidekiq进程(ps aux | grep sidekiq)并杀死这些进程。然后重新启动工人。

参考:https://github.com/mperham/sidekiq/issues/1958

检查@pkoltermann在这个问题上

+0

答案我想(的ps aux | grep的sidekiq)并杀害的过程。它现在可以在生产上正常工作。 – Arif

相关问题