【问题标题】:Upgrading to Rails 4.2 breaks Delayed::Job: Job failed to load: undefined method 'fetch_value'升级到 Rails 4.2 中断 Delayed::Job:作业加载失败:未定义的方法 'fetch_value'
【发布时间】: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


【解决方案1】:

当我将应用程序升级到 Rails 4.2.1 时,我遇到了类似的 fetch_value 错误。要更深入地了解错误,请获取任何出现此错误的作业并在 rails 控制台中运行以下命令:

YAML.load_dj(Delayed::Job.find(JOB_ID).handler)

它运行内部延迟的作业代码,但应该为您提供更好的调试跟踪。

来源:https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/backend/base.rb#L90

该错误可能是在 Rails 4.2 升级之前和在 application.rb 中设置 config.active_job.queue_adapter = :delayed_job 之前排队/创建作业的结果。如果配置没有正确设置,那么作业将以 Rails 4.2 无法处理的格式序列化。要运行带有fetch_value 错误的任何作业,您可以切换到仍然在 > Rails 4.2 上的代码分支并从 rails 控制台运行作业。

【讨论】:

  • 我们是否需要设置“config.active_job.queue_adapter = :delayed_job”,即使我们没有设置任何活动的 Job 基础设施? IE。我们只是在没有活动作业的情况下使用延迟作业(4.2 之前的唯一选项)
  • 是的,我也没有设置 ActiveJob,但无论如何设置 config.active_job.queue_adapter = :delayed_job 似乎是必需的。
  • 所以问题是延迟的作业是在 Rails 3 下准备的,并在更新后持续存在。所以我什么都不用做:|
【解决方案2】:

您可以尝试将delayed_job 更新到较新的版本,有一系列changes 支持rails 4/4.2/4.4,看看它是否会影响您的应用程序。

对于 rails 4.2 他们 expect 你在 config/application.rb 中设置 config.active_job.queue_adapter = :delayed_job

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2014-11-23
    相关资源
    最近更新 更多