有时我在delayed_job工作者中遇到错误
NameError: uninitialized constant Notifiers::MessageNotifierJob
完全回溯https://gist.github.com/olegantonyan/eeca9d612f9a10864efe
Notifiers::MessageNotifierJob
在app/jobs/notifiers/message_notifier_job.rb
有时我的意思是这项工作可能会失败 - >重试 - >成功。与具有命名空间的另一个作业相同。没有命名空间的工作就可以了。
我试图明确地将app/jobs/
添加到自动加载路径而没有任何运气
config.autoload_paths += Dir[ Rails.root.join('app', 'jobs', '**/') ]
作业本身看起来像这样
module Notifiers
class MessageNotifierJob < BaseNotifierJob
def perform(from, to, text)
# some code to send slack notification
end
end
end
答案 0 :(得分:1)
解决。延迟工作或自动加载器不应该受到责备。
在添加这些新工作前一周(如Notifiers::MessageNotifierJob
)我从1到4增加了延迟工作人员(使用capistrano3-delayed-job
宝石)的数量。但是,capistrano3-delayed-job没有杀死旧的延迟工作流程,只开始新的4.所以我结束了一份旧工作,对我的新工作班没有任何了解。每当这个旧过程选择了该作业时,它就失败了。然后其中一个新流程选择了这个工作并成功了。