1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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
|