25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/asset_cloud/callbacks.rb', line 25
def define_callbacks(method)
before = :"before_#{method}"
after = :"after_#{method}"
extension_module.send(:define_method, method) do |*args, &block|
result = nil
if execute_callbacks(before, args)
result = super(*args, &block)
execute_callbacks(after, args) if result
end
result
end
define_singleton_method(before) do |*callbacks, &block|
callbacks << block if block_given?
callbacks = (_callbacks[before] || []) + callbacks
self._callbacks = _callbacks.merge(before => callbacks).freeze
end
define_singleton_method(after) do |*callbacks, &block|
callbacks << block if block_given?
callbacks = (_callbacks[after] || []) + callbacks
self._callbacks = _callbacks.merge(after => callbacks).freeze
end
end
|