Class: Appsignal::Rack::GenericInstrumentation Private
- Defined in:
- lib/appsignal/rack/generic_instrumentation.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Instance Method Summary collapse
- #call(env) ⇒ Object private
- #call_with_appsignal_monitoring(env) ⇒ Object private
-
#initialize(app, options = {}) ⇒ GenericInstrumentation
constructor
private
A new instance of GenericInstrumentation.
Constructor Details
#initialize(app, options = {}) ⇒ GenericInstrumentation
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of GenericInstrumentation.
9 10 11 12 13 |
# File 'lib/appsignal/rack/generic_instrumentation.rb', line 9 def initialize(app, = {}) Appsignal.logger.debug "Initializing Appsignal::Rack::GenericInstrumentation" @app = app @options = end |
Instance Method Details
#call(env) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
15 16 17 18 19 20 21 |
# File 'lib/appsignal/rack/generic_instrumentation.rb', line 15 def call(env) if Appsignal.active? call_with_appsignal_monitoring(env) else @app.call(env) end end |
#call_with_appsignal_monitoring(env) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/appsignal/rack/generic_instrumentation.rb', line 23 def call_with_appsignal_monitoring(env) request = ::Rack::Request.new(env) transaction = Appsignal::Transaction.create( SecureRandom.uuid, Appsignal::Transaction::HTTP_REQUEST, request ) begin Appsignal.instrument("process_action.generic") do @app.call(env) end rescue Exception => error # rubocop:disable Lint/RescueException transaction.set_error(error) raise error ensure if env["appsignal.route"] transaction.set_action_if_nil(env["appsignal.route"]) else transaction.set_action_if_nil("unknown") end transaction.("path", request.path) transaction.("method", request.request_method) transaction.set_http_or_background_queue_start Appsignal::Transaction.complete_current! end end |