mirror of https://github.com/rails/rails
38 lines
956 B
Ruby
38 lines
956 B
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "../support/job_buffer"
|
|
|
|
class RescueJob < ActiveJob::Base
|
|
class OtherError < StandardError; end
|
|
|
|
rescue_from(ArgumentError) do
|
|
JobBuffer.add("rescued from ArgumentError")
|
|
arguments[0] = "DIFFERENT!"
|
|
job = retry_job
|
|
JobBuffer.add("Retried job #{job.arguments[0]}")
|
|
job
|
|
end
|
|
|
|
rescue_from(ActiveJob::DeserializationError) do |e|
|
|
JobBuffer.add("rescued from DeserializationError")
|
|
JobBuffer.add("DeserializationError original exception was #{e.cause.class.name}")
|
|
end
|
|
|
|
rescue_from(NotImplementedError) do
|
|
JobBuffer.add("rescued from NotImplementedError")
|
|
end
|
|
|
|
def perform(person = "david")
|
|
case person
|
|
when "david"
|
|
raise ArgumentError, "Hair too good"
|
|
when "other"
|
|
raise OtherError, "Bad hair"
|
|
when "rafael"
|
|
raise NotImplementedError, "Hair is just perfect"
|
|
else
|
|
JobBuffer.add("performed beautifully")
|
|
end
|
|
end
|
|
end
|