【发布时间】:2015-05-01 06:44:32
【问题描述】:
升级到 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 方法。
【问题讨论】:
-
您的延迟作业是在本地开发环境中失败,还是仅在生产环境中失败?生产中一个新的延迟作业会失败吗?
-
在本地开发中运行良好。只在生产中打破。新的延迟作业以及之前创建的作业都会失败。
标签: ruby-on-rails delayed-job ruby-on-rails-4.2