class LogrageRailsRequestQueuing::RequestQueueing
Constants
- EARLIEST_REQUEST_DATE
- REQUEST_START_HEADER
Attributes
queued_ms[R]
How long was the request queued for, in milliseconds
request_queued_raw[R]
request_started_at[R]
Public Class Methods
new(env, request_started_at = Time.zone.now.to_f)
click to toggle source
# File lib/lograge_rails_request_queuing/request_queuing.rb, line 12 def initialize(env, request_started_at = Time.zone.now.to_f) @request_queued_raw = request_start_header(env) @request_started_at = request_started_at @queued_ms = calculate_queued_ms end
Public Instance Methods
request_queued_at()
click to toggle source
# File lib/lograge_rails_request_queuing/request_queuing.rb, line 18 def request_queued_at return if request_queued_float.blank? @request_queued_at ||= begin [1000, 1].each do |divisor| adjusted = Time.zone.at(request_queued_float / divisor) return adjusted if adjusted > EARLIEST_REQUEST_DATE end end end
Private Instance Methods
calculate_queued_ms()
click to toggle source
# File lib/lograge_rails_request_queuing/request_queuing.rb, line 30 def calculate_queued_ms return if request_queued_at.blank? waiting_interval_secs = request_started_at - request_queued_at.to_f return if waiting_interval_secs < 0 # clocks out of alignment waiting_interval_secs * 1000 end
request_queued_float()
click to toggle source
# File lib/lograge_rails_request_queuing/request_queuing.rb, line 39 def request_queued_float return nil if request_queued_raw.blank? # convert values of the form: # "t=1529578997.145" # "1529578997145" # to a Float: if request_queued_raw =~ /(t=)?([.\d+]+)/ Float(Regexp.last_match(2)) end end
request_start_header(env)
click to toggle source
# File lib/lograge_rails_request_queuing/request_queuing.rb, line 52 def request_start_header(env) env[REQUEST_START_HEADER] end