Sha256: d0d2ea6c200656715d49014371fafda3bd3050dd582df36904445a6aa2907831

Contents?: true

Size: 930 Bytes

Versions: 63

Compression:

Stored size: 930 Bytes

Contents

module Guard
  module Internals
    module Tracing
      def self.trace(mod, meth)
        meta = (class << mod; self; end)
        original_meth = "original_#{meth}".to_sym

        if mod.respond_to?(original_meth)
          fail "ALREADY TRACED: #{mod}.#{meth}"
        end

        meta.send(:alias_method, original_meth, meth)
        meta.send(:define_method, meth) do |*args, &block|
          yield(*args) if block_given?
          mod.send original_meth, *args, &block
        end
      end

      def self.untrace(mod, meth)
        meta = (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

        meta.send(:remove_method, meth)
        meta.send(:alias_method, meth, original_meth)
        meta.send(:undef_method, original_meth)
      end
    end
  end
end

Version data entries

63 entries across 63 versions & 10 rubygems

Version Path
guard-2.19.0 lib/guard/internals/tracing.rb
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/guard-2.18.1/lib/guard/internals/tracing.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/guard-2.18.1/lib/guard/internals/tracing.rb
guard-2.18.1 lib/guard/internals/tracing.rb
op_connect-0.1.2 vendor/bundle/ruby/3.1.0/gems/guard-2.18.0/lib/guard/internals/tracing.rb
guard-2.18.0 lib/guard/internals/tracing.rb
guard-2.17.0 lib/guard/internals/tracing.rb
qiita_org-0.1.35 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.34 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.33 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.32 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.31 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.30 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.29 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.28 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.27 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.26 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
qiita_org-0.1.25 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/internals/tracing.rb
guard-2.16.2 lib/guard/internals/tracing.rb
honeybadger-4.5.3 vendor/bundle/ruby/2.6.0/gems/guard-2.15.0/lib/guard/internals/tracing.rb