Module: NewRelic::Agent::Instrumentation::Sinatra
- Includes:
- ControllerInstrumentation
- Defined in:
- lib/new_relic/agent/instrumentation/sinatra.rb
Overview
NewRelic instrumentation for Sinatra applications. Sinatra actions will appear in the UI similar to controller actions, and have breakdown charts and transaction traces.
The actions in the UI will correspond to the pattern expression used to match them. HTTP operations are not distinguished. Multiple matches will all be tracked as separate actions.
Defined Under Namespace
Modules: NewRelic
Instance Method Summary collapse
- #dispatch_and_notice_errors_with_newrelic ⇒ Object
- #dispatch_with_newrelic ⇒ Object
-
#newrelic_request_headers ⇒ Object
Define Request Header accessor for Sinatra.
Methods included from ControllerInstrumentation
included, #newrelic_metric_path, #perform_action_with_newrelic_trace
Instance Method Details
#dispatch_and_notice_errors_with_newrelic ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/new_relic/agent/instrumentation/sinatra.rb', line 58 def dispatch_and_notice_errors_with_newrelic dispatch_without_newrelic ensure # Will only see an error raised if :show_exceptions is true, but # will always see them in the env hash if they occur had_error = env.has_key?('sinatra.error') ::NewRelic::Agent.notice_error(env['sinatra.error']) if had_error end |
#dispatch_with_newrelic ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/new_relic/agent/instrumentation/sinatra.rb', line 39 def dispatch_with_newrelic # We're trying to determine the transaction name via Sinatra's # process_route, but calling it here misses Sinatra's normal error handling. # # Relies on transaction_name to always safely return a value for us txn_name = NewRelic.transaction_name(self.class.routes, @request) do |pattern, keys, conditions| result = process_route(pattern, keys, conditions) do pattern.source end result if result.class == String end perform_action_with_newrelic_trace(:category => :sinatra, :name => txn_name, :params => @request.params) do dispatch_and_notice_errors_with_newrelic end end |
#newrelic_request_headers ⇒ Object
Define Request Header accessor for Sinatra
68 69 70 |
# File 'lib/new_relic/agent/instrumentation/sinatra.rb', line 68 def newrelic_request_headers request.env end |