Sha256: c91126901366958522cf1fa66de2fec705dd3388f816816f5536a66d9f943fbb

Contents?: true

Size: 895 Bytes

Versions: 6

Compression:

Stored size: 895 Bytes

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'new_relic/agent/event_listener'

module NewRelic::Rack
  class AgentHooks
    def initialize(app, options = {})
      @app = app
    end

    FIRED_FORMATS = {
      :before_call => "newrelic.agent_hooks_before_fired",
      :after_call  => "newrelic.agent_hooks_after_fired"
    }

    # method required by Rack interface
    # [status, headers, response]
    def call(env)
      notify(:before_call, env)
      result = @app.call(env)
      notify(:after_call, env, result)
      result
    end

    def notify(event, env, *args)
      key = FIRED_FORMATS[event]
      events.notify(event, *([env] + args)) unless env[key]
      env[key] = true
    end

    def events
      NewRelic::Agent.instance.events
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
newrelic_rpm-3.6.8.168 lib/new_relic/rack/agent_hooks.rb
newrelic_rpm-3.6.8.164 lib/new_relic/rack/agent_hooks.rb
newrelic_rpm-3.6.7.159 lib/new_relic/rack/agent_hooks.rb
newrelic_rpm-3.6.7.159.beta lib/new_relic/rack/agent_hooks.rb
newrelic_rpm-3.6.7.152 lib/new_relic/rack/agent_hooks.rb
newrelic_rpm-3.6.6.147 lib/new_relic/rack/agent_hooks.rb