Module: NewRelic::Agent::Instrumentation::PadrinoTracer::Chain

Defined in:
lib/new_relic/agent/instrumentation/padrino/chain.rb

Class Method Summary collapse

Class Method Details

.instrument!Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/new_relic/agent/instrumentation/padrino/chain.rb', line 10

def self.instrument!
  ::Padrino::Routing::InstanceMethods.module_eval do
    include NewRelic::Agent::Instrumentation::Sinatra

    def dispatch_with_newrelic
      dispatch_with_tracing { dispatch_without_newrelic }
    end

    alias dispatch_without_newrelic dispatch!
    alias dispatch! dispatch_with_newrelic

    # Padrino 0.13 mustermann routing
    if private_method_defined?(:invoke_route)
      include NewRelic::Agent::Instrumentation::Padrino

      def invoke_route_with_newrelic(*args, &block)
        invoke_route_with_tracing(*args) { invoke_route_without_newrelic(*args, &block) }
      end

      alias invoke_route_without_newrelic invoke_route
      alias invoke_route invoke_route_with_newrelic
    end
  end
end