我使用的是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)
答案 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的答案