Sha256: 78f4abbc62f91743a4410651bf7b451938e0707c849c1cb91aa0a2e4cbaa5e7c

Contents?: true

Size: 811 Bytes

Versions: 8

Compression:

Stored size: 811 Bytes

Contents

require 'logger'
require 'active_support/notifications'

module Vx
  module Instrumentation
    Subscriber = Struct.new(:name, :payload, :tags) do

      def process ; end

      class << self

        def install
          ev = event || /.*/
          $stdout.puts " --> add instrumentation #{self.to_s} to #{ev.inspect}"
          ActiveSupport::Notifications.subscribe(ev) do |name, started, finished, uid, payload|
            if name[0] != '!'
              tags = name.split(".")
              inst = new(name, payload, tags).tap(&:process)
              Instrumentation.delivery(inst.name, inst.payload, inst.tags.uniq, started, finished)
            end
          end
        end

        def event(name = nil)
          @event = name if  name
          @event
        end

      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
vx-instrumentation-0.0.8 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.7 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.6 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.5 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.4 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.3 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.2 lib/vx/instrumentation/subscriber.rb
vx-instrumentation-0.0.1 lib/vx/instrumentation/subscriber.rb