diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-09-06 12:36:29 +0300 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-11-02 20:11:43 +0300 |
commit | a8a5c337c1d6914a0f9bdd17fb9fe1453c21a067 (patch) | |
tree | 84172d4d0f0f565b4d60d1b1f8d3713ad98b22ac /lib/gitlab/metrics/rack_middleware.rb | |
parent | 29a1ad16467123c5d6a11e5c7bf0ebacc4e79438 (diff) |
Transaction needs to be able to describe controller action by itself
Diffstat (limited to 'lib/gitlab/metrics/rack_middleware.rb')
-rw-r--r-- | lib/gitlab/metrics/rack_middleware.rb | 51 |
1 files changed, 1 insertions, 50 deletions
diff --git a/lib/gitlab/metrics/rack_middleware.rb b/lib/gitlab/metrics/rack_middleware.rb index fcfaeb83b4c..11af1fb6322 100644 --- a/lib/gitlab/metrics/rack_middleware.rb +++ b/lib/gitlab/metrics/rack_middleware.rb @@ -2,20 +2,6 @@ module Gitlab module Metrics # Rack middleware for tracking Rails and Grape requests. class RackMiddleware - CONTROLLER_KEY = 'action_controller.instance'.freeze - ENDPOINT_KEY = 'api.endpoint'.freeze - CONTENT_TYPES = { - 'text/html' => :html, - 'text/plain' => :txt, - 'application/json' => :json, - 'text/js' => :js, - 'application/atom+xml' => :atom, - 'image/png' => :png, - 'image/jpeg' => :jpeg, - 'image/gif' => :gif, - 'image/svg+xml' => :svg - }.freeze - def initialize(app) @app = app end @@ -42,49 +28,14 @@ module Gitlab end def transaction_from_env(env) - trans = Transaction.new + trans = Transaction.new(env) trans.set(:request_uri, filtered_path(env), false) trans.set(:request_method, env['REQUEST_METHOD'], false) - if env[CONTROLLER_KEY] - tag_controller(trans, env) - elsif env[ENDPOINT_KEY] - tag_endpoint(trans, env) - end - trans end - def tag_controller(trans, env) - controller = env[CONTROLLER_KEY] - action = "#{controller.class.name}##{controller.action_name}" - suffix = CONTENT_TYPES[controller.content_type] - - if suffix && suffix != :html - action += ".#{suffix}" - end - - trans.action = action - end - - def tag_endpoint(trans, env) - endpoint = env[ENDPOINT_KEY] - - begin - route = endpoint.route - rescue - # endpoint.route is calling env[Grape::Env::GRAPE_ROUTING_ARGS][:route_info] - # but env[Grape::Env::GRAPE_ROUTING_ARGS] is nil in the case of a 405 response - # so we're rescuing exceptions and bailing out - end - - if route - path = endpoint_paths_cache[route.request_method][route.path] - trans.action = "Grape##{route.request_method} #{path}" - end - end - private def filtered_path(env) |