Module: Guard::Internals::Tracing
- Defined in:
- lib/guard/internals/tracing.rb
Class Method Summary collapse
Class Method Details
.trace(mod, meth) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/guard/internals/tracing.rb', line 4 def self.trace(mod, meth) = (class << mod; self; end) original_meth = "original_#{meth}".to_sym if mod.respond_to?(original_meth) fail "ALREADY TRACED: #{mod}.#{meth}" end .send(:alias_method, original_meth, meth) .send(:define_method, meth) do |*args, &block| yield(*args) if block_given? mod.send original_meth, *args, &block end end |
.untrace(mod, meth) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/guard/internals/tracing.rb', line 19 def self.untrace(mod, meth) = (class << mod; self; end) original_meth = "original_#{meth}".to_sym unless mod.respond_to?(original_meth) fail "NOT TRACED: #{mod}.#{meth} (no method: #{original_meth})" end .send(:remove_method, meth) .send(:alias_method, meth, original_meth) .send(:undef_method, original_meth) end |