Class: Class
- Inherits:
-
Object
- Object
- Class
- Defined in:
- lib/hook_method.rb
Overview
method_hooker @autor: Kazuya Hotta
Constant Summary collapse
- @@hooked =
[]
Instance Method Summary collapse
- #post_execute_method(execute_method_name, hook_method_name) ⇒ Object
- #pre_execute_method(execute_method_name, hook_method_name) ⇒ Object
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 |