class Class

method_hooker @autor: Kazuya Hotta

Public Instance Methods

post_execute_method(execute_method_name, hook_method_name) click to toggle source
# File lib/hook_method.rb, line 18
def post_execute_method(execute_method_name, hook_method_name)
  return if @@hooked.any? {|hook| hook.class_name == self && hook.strategy == :post && hook.execute_method_name == execute_method_name && hook.hook_method_name == hook_method_name}
  @@hooked << OpenStruct.new(class_name: self, strategy: :post, execute_method_name: execute_method_name, hook_method_name: hook_method_name)
  post_method = instance_method(execute_method_name.id2name)
  hook_method = instance_method(hook_method_name.id2name)
  define_method(hook_method_name) do |*args|
    hook_method.bind(self).call(*args)
    post_method.bind(self).call
  end
end
pre_execute_method(execute_method_name, hook_method_name) click to toggle source
# File lib/hook_method.rb, line 7
def pre_execute_method(execute_method_name, hook_method_name)
  return if @@hooked.any? {|hook| hook.class_name == self && hook.strategy == :pre && hook.execute_method_name == execute_method_name && hook.hook_method_name == hook_method_name}
  @@hooked << OpenStruct.new(class_name: self, strategy: :pre, execute_method_name: execute_method_name, hook_method_name: hook_method_name)
  pre_method = instance_method(execute_method_name.id2name)
  hook_method = instance_method(hook_method_name.id2name)
  define_method(hook_method_name) do |*args|
    pre_method.bind(self).call
    hook_method.bind(self).call(*args)
  end
end