Module: DoBlocks
- Defined in:
- lib/do_blocks.rb
Instance Method Summary collapse
- #do_after(method_name, &block) ⇒ Object
- #do_before(method_name, &block) ⇒ Object
- #do_on_error(method_name, reraise: true, &block) ⇒ Object
Instance Method Details
#do_after(method_name, &block) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/do_blocks.rb', line 11 def do_after(method_name, &block) original_method = instance_method(method_name) define_method(method_name) do |*args, **kwargs| result = original_method.bind(self).call(*args, **kwargs) block.call(args, kwargs, result) result end end |
#do_before(method_name, &block) ⇒ Object
2 3 4 5 6 7 8 9 |
# File 'lib/do_blocks.rb', line 2 def do_before(method_name, &block) original_method = instance_method(method_name) define_method(method_name) do |*args, **kwargs| block.call(args, kwargs) original_method.bind(self).call(*args, **kwargs) end end |
#do_on_error(method_name, reraise: true, &block) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/do_blocks.rb', line 21 def do_on_error(method_name, reraise: true, &block) original_method = instance_method(method_name) define_method(method_name) do |*args, **kwargs| begin original_method.bind(self).call(*args, **kwargs) rescue => error block.call(args, kwargs, error) raise error if reraise end end end |