2016-01-21 44 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

相關問題