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对该问题的回答
我正在使用 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对该问题的回答