【问题标题】:ActiveJob rescue_from returning success without raise and failActiveJob rescue_from 返回成功而没有提升和失败
【发布时间】:2018-11-19 12:28:17
【问题描述】:

我试图在我的ApplicationJob 中捕获一些错误,但我不希望这些错误引发异常(并返回失败的作业执行),但我希望忽略某些错误(基本上返回成功) . 我可以在每项工作中单独使用常规begin-rescue 来完成此操作,但我想在多个工作之间共享此救援。

问题是rescue_from 捕获了错误但无论如何都会引发错误,并且作业在执行时失败。

application_job.rb

class ApplicationJob < ActiveJob::Base

  rescue_from StandardError do |exception|
    puts "Rescuing"
    true
  end

end

test_job.rb

class TestJob < ApplicationJob


  def perform(*args)
    raise ActiveResource::ResourceNotFound, "Wow"
  end

end

执行作业时记录:

Performing TestJob (Job ID: fd58cbd5-eb03-4fdc-8301-1ea70a9b1d8b) from Async(default)
Error performing TestJob (Job ID: fd58cbd5-eb03-4fdc-8301-1ea70a9b1d8b) from Async(default) in 1.03ms: ActiveResource::ResourceNotFound (Failed.):
...
.../.rvm/rubies/ruby-2.4.4/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
-e:1:in `<main>'
Rescuing
 => #<ActiveResource::ResourceNotFound: Failed.>

【问题讨论】:

  • 您确定错误正在引发吗?根据您的日志,您的工作似乎正在返回异常对象,而不是引发它

标签: ruby ruby-on-rails-5 rails-activejob


【解决方案1】:

这个问题已经有几天了,但还没有回答。

在定义救援之前,你必须在你的工作类中include ActiveSupport::Rescuable

另请参阅与此主题相关的另一个问题:rescue_from not working in ActiveJob

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
相关资源
最近更新 更多