class Rack::ActionLogger::Metrics::RackMetrics

Constants

EXCLUDE_PATH_PREFIX
METRICS
RACK_TAG_PREFIX

Attributes

status_code[R]

Public Class Methods

new(env, status_code, headers, body) click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 16
def initialize(env, status_code, headers, body)
  @env = env
  @status_code = status_code
  @headers = headers
  @body = body
  @request = Rack::Request.new(env)
  @response = Rack::Response.new(body, status_code, headers)
  @ua = Woothee.parse(@request.user_agent)
end

Public Instance Methods

action_controller() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 65
def action_controller
  @env['action_controller.instance']
end
browser() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 93
def browser
  @ua[:name]
end
browser_version() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 97
def browser_version
  @ua[:version]
end
content_type() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 69
def content_type
  @response.content_type
end
device() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 85
def device
  @ua[:category]
end
enable_metrics() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 61
def enable_metrics
  Rack::ActionLogger.configuration.rack_content_types.any? { |c| content_type.to_s.include?(c) } || action_controller
end
ip() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 77
def ip
  @request.ip
end
method() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 49
def method
  @request.request_method
end
metrics() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 36
def metrics
  return unless enable_metrics
  METRICS.inject({}) do |result, metric|
    result[metric] = self.send(metric) unless
        Rack::ActionLogger.configuration.rack_request_blacklist.include? metric
    result
  end
end
os() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 89
def os
  @ua[:os]
end
params() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 53
def params
  Rack::ActionLogger::ParameterFiltering.apply_filter(@request.params)
end
path() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 45
def path
  @request.path
end
remote_ip() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 73
def remote_ip
  @env['action_dispatch.remote_ip']
end
request_headers() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 57
def request_headers
  @env.select { |v| v.start_with? 'HTTP_' }
end
request_id() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 101
def request_id
  @env['action_dispatch.request_id']
end
response_headers() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 105
def response_headers
  @headers
end
response_json_body() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 109
def response_json_body
  response_bodies = []
  @body.each { |part| response_bodies << part } if @body
  result = JSON.parse(response_bodies.join('')) rescue {}
  Rack::ActionLogger::ParameterFiltering.apply_filter(result)
end
tag_suffix() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 26
def tag_suffix
  return RACK_TAG_PREFIX if Rack::ActionLogger.configuration.rack_unified_tag
  if @status_code == 404
    tags = ['not_found']
  else
    tags = URI(path).path.split('/').reject { |c| c.empty? }
  end
  (Array(RACK_TAG_PREFIX) + tags).join('.')
end
user_agent() click to toggle source
# File lib/rack/action_logger/metrics/rack_metrics.rb, line 81
def user_agent
  @request.user_agent
end