Sha256: eec993fcc4a6d3dcfec7e99a69c04f0e3990c065bf096f4e6458fa0af4929b23

Contents?: true

Size: 1.25 KB

Versions: 5

Compression:

Stored size: 1.25 KB

Contents

# Copyright (c) 2013 AppNeta, Inc.
# All rights reserved.

module Oboe
  module Util
    class << self
      ##
      # oboe_alias
      #
      # Centralized utility method to alias a method on an arbitrary
      # class or module.
      #
      def method_alias(cls, method, name=nil)
        # Attempt to infer a contextual name if not indicated
        #
        # For example:
        # ::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.to_s.split(/::/).last
        # => "AbstractMysqlAdapter"
        #
        begin
          name ||= cls.to_s.split(/::/).last 
        rescue
        end

        if cls.method_defined? method.to_sym or cls.private_method_defined? method.to_sym
          cls.class_eval do
            alias_method "#{method}_without_oboe", "#{method}"
            alias_method "#{method}", "#{method}_with_oboe"
          end
        else Oboe.logger.warn "[oboe/loading] Couldn't properly instrument #{name}.  Partial traces may occur."
        end
      end
  
      ##
      # oboe_send_include
      #
      # Centralized utility method to send a include call for an
      # arbitrary class
      def send_include(target_cls, cls)
        if defined?(target_cls)
          target_cls.send(:include, cls)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
oboe-2.5.0.7 lib/oboe/util.rb
oboe-2.4.0.1 lib/oboe/util.rb
oboe-2.3.4.1 lib/oboe/util.rb
oboe-2.3.3.7 lib/oboe/util.rb
oboe-2.3.2 lib/oboe/util.rb