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

时间:2016-01-21 10:57:22

标签: ruby-on-rails-4 sidekiq

我使用的是Rails 4.1.5和Sidekiq 3.3.0。我已将此工作人员的重复设置为每隔一分钟执行一次。它在本地工作正常但在生产和登台环境中抛出错误。虽然工作人员正在完成其工作并保存记录,但仅在一分钟后抛出错误。

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)

1 个答案:

答案 0 :(得分:4)

如果在application.rb rails文件夹中定义了工作类,则不需要在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的答案