Sha256: 14c72444d2b85d7be511ecea3da8b8a40edae84530d5c5144671e05893a8402e

Contents?: true

Size: 1.2 KB

Versions: 7

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

require_relative './method_proxy'
require_relative './context'

module InstrumentAllTheThings
  module Helpers
    module ClassMethods
      def instrument(**kwargs)
        @last_settings = kwargs
      end

      def _conscript_last_iatt_settings
        @last_settings.tap { @last_settings = nil }
      end

      def singleton_method_added(method_name)
        settings = _conscript_last_iatt_settings

        return unless settings

        settings[:context] = Context.new(
          method_name: method_name,
          instance: false
        )

        InstrumentAllTheThings::MethodProxy
          .for_class(singleton_class)
          .wrap_implementation(method_name, settings)
        super
      end

      def method_added(method_name)
        settings = _conscript_last_iatt_settings

        return unless settings

        settings[:context] = Context.new(
          method_name: method_name,
          instance: true
        )

        InstrumentAllTheThings::MethodProxy
          .for_class(self)
          .wrap_implementation(method_name, settings)

        super
      end
    end

    def self.included(other_class)
      other_class.extend(ClassMethods)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
instrument_all_the_things-1.1.0 lib/instrument_all_the_things/helpers.rb
instrument_all_the_things-1.0.4 lib/instrument_all_the_things/helpers.rb
instrument_all_the_things-1.0.3 lib/instrument_all_the_things/helpers.rb
instrument_all_the_things-1.0.2 lib/instrument_all_the_things/helpers.rb
instrument_all_the_things-1.0.1 lib/instrument_all_the_things/helpers.rb
instrument_all_the_things-0.9.1.alpha lib/instrument_all_the_things/helpers.rb
instrument_all_the_things-0.9.0.alpha lib/instrument_all_the_things/helpers.rb