Иногда, когда мы обновляем libs, отложенные задания по-прежнему сохраняют старые ссылки.
Попробуйте найти идентификатор delayed_job в журналах и воспроизвести, чтобы проанализировать его обработчик и ruby, чтобы найти неверную ссылку
j = DelayedJob.find(XXX)
data = YAML.load_dj(j.handler)
data.to_ruby
Я сделал запрос на получение , чтобы помочь с этой проблемой.
Тем временем вы можете использовать эти строки
# config/initializers/delayed_job.rb
# Monkey patch to use old class references
module Psych
class << self; attr_accessor :old_class_references end
@old_class_references = {}
class ClassLoader
private
def find klassname
klassname = ::Psych.old_class_references[klassname] || klassname
@cache[klassname] ||= resolve(klassname)
end
end
module Visitors
class ToRuby < Psych::Visitors::Visitor
def revive klass, node
if klass.is_a? String
klassname = ::Psych.old_class_references[klass] || klass
klass = Kernel.const_get(klassname) rescue klassname
end
s = register(node, klass.allocate)
init_with(s, revive_hash({}, node), node)
end
end
end
end
# Add all old dependencies (hash keys) pointing to new references (hash values)
Psych.old_class_references = {
'ActiveRecord::AttributeSet' => 'ActiveModel::AttributeSet'
# ...
}