Sidekiq 警告:未初始化的常量 ViewDBWorker Rails 4

Sidekiq WARN: uninitialized constant ViewDBWorker Rails 4

我正在使用 Rails 4.1.5 和 Sidekiq 3.3.0。我已将此 worker 的重复设置为每隔一分钟执行一次。它在本地运行良好,但在生产和暂存环境中抛出错误。虽然工作人员正在做它的工作并保存记录,但一分钟后才抛出错误。

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

app/workers/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)

如果您在 rails 的 app/* 文件夹中定义了工作人员 类,则无需将目录添加到 application.rb 中的加载路径。 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)并杀死它们。然后重启worker。

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

查看@pkoltermann对该问题的回答