class ElasticAPM::Middleware
@api private
def call(env)
def call(env) begin transaction = ElasticAPM.transaction 'Rack', 'app', context: ElasticAPM.build_context(env) resp = @app.call env status, headers, = resp if transaction transaction.submit(status, status: status, headers: headers) end rescue InternalError raise # Don't report ElasticAPM errors rescue ::Exception => e ElasticAPM.report(e, handled: false) transaction.submit(500, status: 500) if transaction raise ensure transaction.release if transaction end resp end
def initialize(app)
def initialize(app) @app = app end