Sha256: d90fe639295dbc1d5d8e0e27c8b34b3bae06b680d73ffeb296a216fe781f6628

Contents?: true

Size: 951 Bytes

Versions: 7

Compression:

Stored size: 951 Bytes

Contents

module PulseMeter
  class Observer::Extended < ::PulseMeter::Observer
    class << self
      protected

      def define_instrumented_method(method_owner, method, receiver, &handler)
        with_observer = method_with_observer(method)
        without_observer = method_without_observer(method)
        method_owner.send(:define_method, with_observer) do |*args, &block|
          start_time = Time.now
          begin
            result = self.send(without_observer, *args, &block)
          ensure
            begin
              delta = ((Time.now - start_time) * 1000).to_i
              observe_parameters = {
                self: self,
                delta: delta,
                result: result,
                args: args,
                exception: $!
              }
              receiver.instance_exec(observe_parameters, &handler)
            rescue StandardError
            end
          end
        end
      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
pulse_meter_core-0.5.5 lib/pulse_meter/observer/extended.rb
pulse_meter_core-0.5.4 lib/pulse_meter/observer/extended.rb
pulse_meter_core-0.5.3 lib/pulse_meter/observer/extended.rb
pulse_meter_core-0.5.2 lib/pulse_meter/observer/extended.rb
pulse_meter_core-0.5.1 lib/pulse_meter/observer/extended.rb
pulse_meter_core-0.5.0 lib/pulse_meter/observer/extended.rb
pulse_meter_core-0.4.13 lib/pulse_meter/observer/extended.rb