Sha256: bbc33455010a7713764716aca95e81036e9b4a9f5cbc97459048ccbaf01e995e

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

module Skylight
  # TODO: Handle filtering out notifications that we don't care about
  class Subscriber
    def self.register!(config=Config.new)
      ActiveSupport::Notifications.subscribe nil, new(config)
    end

    def initialize(config)
      @config = config
    end

    def start(name, id, payload)
      return unless trace = Trace.current

      name, title, desc, payload = Normalize.normalize(trace, name, payload)

      if name != :skip
        logger.debug("[SKYLIGHT] START: #{name} (#{title}, \"#{desc}\")")
        logger.debug("[SKYLIGHT] > #{payload.inspect}")
      else
        logger.debug("[SKYLIGHT] START: skipped")
      end

      trace.start(name, title, desc, payload)
    end

    def finish(name, id, payload)
      return unless trace = Trace.current

      logger.debug("[SKYLIGHT] END")
      trace.stop
    end

    def measure(name, id, payload)
      return unless trace = Trace.current

      name, title, desc, payload = Normalize.normalize(trace, name, payload)

      if name != :skip
        logger.debug("[SKYLIGHT] MEASURE: #{name} (#{title}, \"#{desc}\")")
        logger.debug("[SKYLIGHT] > #{payload.inspect}")
      else
        logger.debug("[SKYLIGHT] MEASURE: skipped")
      end

      trace.record(name, title, desc, payload)
    end

  private

    def controller_action(payload)
      "#{payload[:controller]}##{payload[:action]}"
    end

    def logger
      @config.logger
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
skylight-0.0.7 lib/skylight/subscriber.rb