class ElasticAPM::Middleware
def call(env)
def call(env) begin if running? && !path_ignored?(env) transaction = start_transaction(env) end resp = @app.call env rescue InternalError raise # Don't report ElasticAPM errors rescue ::Exception => e context = ElasticAPM.build_context(rack_env: env, for_type: :error) ElasticAPM.report(e, context: context, handled: false) raise ensure if resp && transaction status, headers, _body = resp transaction.add_response(status, headers: headers.dup) end ElasticAPM.end_transaction http_result(status) end resp end