Module: ActiveNotify::Callbacks

Extended by:
ActiveSupport::Concern
Includes:
ActiveSupport::Callbacks
Included in:
Base
Defined in:
lib/active_notify/callbacks.rb

Overview

Active Notify Callbacks

Provides a callback mechanism around notification delivery, mixed in automatically by ActiveNotify::Base. Callbacks can be registered to wrap the full delivery (all carriers) or a single carrier at a time.

Three kinds of callbacks are available: before_delivery, after_delivery, and around_delivery. Each accepts one or more method names, a block, or both, along with an optional :on target to scope the callback to a specific carrier.

class CommentNotifier < ActiveNotify::Base
deliver_via :email
deliver_via :sms

before_delivery :log_delivery
after_delivery  :record_metrics

before_delivery :ensure_email_verified, on: :email
around_delivery :with_timeout,          on: :sms

private

def log_delivery
  Rails.logger.info("Delivering #{self.class.name}")
end
end

Global vs per-carrier callbacks

A callback without :on runs once per delivery, wrapping the whole set of carriers. A callback with :on runs only when that specific carrier is about to deliver. Per-carrier callbacks are skipped if the carrier is skipped by its :if or :unless condition.

Skipping callbacks in subclasses

Inherited callbacks can be removed with skip_before_delivery, skip_after_delivery, and skip_around_delivery:

class QuietNotifier < CommentNotifier
skip_before_delivery :log_delivery
skip_before_delivery :ensure_email_verified, on: :email
end