diff options
Diffstat (limited to 'activejob/test/jobs/rescue_job.rb')
-rw-r--r-- | activejob/test/jobs/rescue_job.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/activejob/test/jobs/rescue_job.rb b/activejob/test/jobs/rescue_job.rb new file mode 100644 index 0000000000..e9cb37d1c4 --- /dev/null +++ b/activejob/test/jobs/rescue_job.rb @@ -0,0 +1,25 @@ +class RescueJob < ActiveJob::Base + class OtherError < StandardError; end + + rescue_from(ArgumentError) do + JobBuffer.add('rescued from ArgumentError') + arguments[0] = "DIFFERENT!" + retry_now + end + + rescue_from(ActiveJob::DeserializationError) do |e| + JobBuffer.add('rescued from DeserializationError') + JobBuffer.add("DeserializationError original exception was #{e.original_exception.class.name}") + end + + def perform(person = "david") + case person + when "david" + raise ArgumentError, "Hair too good" + when "other" + raise OtherError + else + JobBuffer.add('performed beautifully') + end + end +end |