class MethodCallbacks::Executor
Attributes
method[R]
object[R]
type[R]
Public Class Methods
new(method, type, object)
click to toggle source
# File lib/method_callbacks/executor.rb, line 5 def initialize(method, type, object) @method = method @type = type @object = object end
Public Instance Methods
execute(&block)
click to toggle source
# File lib/method_callbacks/executor.rb, line 11 def execute(&block) case type when :proxy execute_proxy_callbacks(&block) when :around execute_around_callbacks(&block) else execute_callbacks end end
Private Instance Methods
callbacks()
click to toggle source
# File lib/method_callbacks/executor.rb, line 24 def callbacks method.callbacks(type) end
execute_around_callbacks()
click to toggle source
# File lib/method_callbacks/executor.rb, line 28 def execute_around_callbacks callbacks.reverse.reduce(Proc.new) { |block, callback_name| Proc.new { object.send(callback_name, &block) } }.call end
execute_callbacks()
click to toggle source
# File lib/method_callbacks/executor.rb, line 32 def execute_callbacks callbacks.each { |callback_name| callback_name.is_a?(Proc) ? object.instance_eval(&callback_name) : object.send(callback_name) } end
execute_proxy_callbacks(&block_on_call)
click to toggle source
# File lib/method_callbacks/executor.rb, line 36 def execute_proxy_callbacks(&block_on_call) callbacks.reduce(object) { |result, block| block.call(result, &block_on_call) } end