instance method discard_on

Ruby on Rails 5.2.8.1

Since v5.2.8.1

Available in: v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

discard_on(exception)

Discard the job with no attempts to retry, if the exception is raised. This is useful when the subject of the job, like an Active Record, is no longer available, and the job is thus no longer relevant.

You can also pass a block that’ll be invoked. This block is yielded with the job instance as the first and the error instance as the second parameter.

Example

class SearchIndexingJob < ActiveJob::Base
  discard_on ActiveJob::DeserializationError
  discard_on(CustomAppException) do |job, error|
    ExceptionNotifier.caught(error)
  end

  def perform(record)
    # Will raise ActiveJob::DeserializationError if the record can't be deserialized
    # Might raise CustomAppException for something domain specific
  end
end

Parameters

exception req
Source
# File activejob/lib/active_job/exceptions.rb, line 79
      def discard_on(exception)
        rescue_from exception do |error|
          if block_given?
            yield self, error
          else
            logger.error "Discarded #{self.class} due to a #{exception}. The original exception was #{error.cause.inspect}."
          end
        end
      end

Defined in activejob/lib/active_job/exceptions.rb line 79 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveJob::Exceptions::ClassMethods

Type at least 2 characters to search.

↑↓ navigate · open · esc close