Class: Class

Inherits:
Object
  • Object
show all
Defined in:
lib/hook_method.rb

Overview

method_hooker @autor: Kazuya Hotta

Constant Summary collapse

@@hooked =
[]

Instance Method Summary collapse

Instance Method Details

#post_execute_method(execute_method_name, hook_method_name) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/hook_method.rb', line 17

def post_execute_method(execute_method_name, hook_method_name)
  return if @@hooked.any?{|hook| hook.strategy == :post && hook.execute_method_name == execute_method_name && hook.hook_method_name == hook_method_name}
  @@hooked << OpenStruct.new(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) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/hook_method.rb', line 6

def pre_execute_method(execute_method_name, hook_method_name)
  return if @@hooked.any?{|hook| hook.strategy == :pre && hook.execute_method_name == execute_method_name && hook.hook_method_name == hook_method_name}
  @@hooked << OpenStruct.new(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