【发布时间】: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