升级到 Rails 4.2,一切都在本地运行良好,推动生产“kaboom”。每个 Delayed::Job 都因相同的错误而失败。
Job failed to load: undefined method 'fetch_value' for #. Handler: " --- YAMLYAMLYAMLYAML "
我们收到的错误消息来自下面的函数,它调用不同的库,捕获实际错误,并返回自己的错误,这使得调试变得非常困难。
def payload_object
@payload_object ||= YAML.load_dj(handler)
rescue TypeError, LoadError, NameError, ArgumentError, SyntaxError, Psych::SyntaxError => e
raise DeserializationError, "Job failed to load: #{e.message}. Handler: #{handler.inspect}"
end
其他可能有用的东西,我们只使用 Delayed::Job(不使用 Active::Job)。
fetch_value 永远不会在delayed_job 中调用,它是一个Active::Record 方法。