1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/lib/action_mailbox/callbacks.rb
2018-10-03 15:36:40 -04:00

37 lines
804 B
Ruby

require "active_support/callbacks"
module ActionMailbox
module Callbacks
extend ActiveSupport::Concern
include ActiveSupport::Callbacks
TERMINATOR = ->(target, chain) do
terminate = true
catch(:abort) do
chain.call
terminate = target.inbound_email.bounced?
end
terminate
end
included do
define_callbacks :process, terminator: TERMINATOR
end
module ClassMethods
def before_processing(*methods, &block)
set_callback(:process, :before, *methods, &block)
end
def after_processing(*methods, &block)
set_callback(:process, :after, *methods, &block)
end
def around_processing(*methods, &block)
set_callback(:process, :around, *methods, &block)
end
end
end
end