Sha256: 5116a19ce65bc25f89cee7c518d4218c70b0f47d2c9116a29212f29582b988df
Contents?: true
Size: 1.04 KB
Versions: 15
Compression:
Stored size: 1.04 KB
Contents
require 'determinator/tracking' module Determinator module Tracking module Rack class Middleware def initialize(app) @app = app end def call(env) Determinator::Tracking.start!(:rack) status, headers, response = @app.call(env) [status, headers, response] rescue error = true raise ensure Determinator::Tracking.finish!( status: status, error: !!error, endpoint: extract_endpoint(env) ) end private def extract_endpoint(env) parts = if params = env['action_dispatch.request.path_parameters'] [env['REQUEST_METHOD'], [params[:controller], params[:action]].join('#')] elsif env['sinatra.route'] [env['sinatra.route']] else [env['REQUEST_METHOD']] end Determinator::Tracking.collect_endpoint_info(parts) rescue env['PATH_INFO'] end end end end end
Version data entries
15 entries across 15 versions & 1 rubygems