【问题标题】:Sidekiq WARN: uninitialized constant ViewDBWorker Rails 4Sidekiq WARN:未初始化的常量 ViewDBWorker Rails 4
【发布时间】:2016-01-22 07:13:21
【问题描述】:

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

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

应用程序.rb

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

【问题讨论】:

    标签: ruby-on-rails-4 sidekiq


    【解决方案1】:

    如果您在 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 对此问题的回答

    【讨论】:

    • 我试过 (ps aux | grep sidekiq) 并杀死了进程。它现在在生产中运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多