require "active_job/arguments" class DelayedMailerError < StandardError; end class DelayedMailer < ActionMailer::Base cattr_accessor :last_error cattr_accessor :last_rescue_from_instance rescue_from DelayedMailerError do |error| @@last_error = error @@last_rescue_from_instance = self end rescue_from ActiveJob::DeserializationError do |error| @@last_error = error @@last_rescue_from_instance = self end def test_message(*) mail(from: "test-sender@test.com", to: "test-receiver@test.com", subject: "Test Subject", body: "Test Body") end def test_raise(klass_name) raise klass_name.constantize, "boom" end end