Class: InstStatsd::RequestTracking

Inherits:
Object
  • Object
show all
Defined in:
lib/inst_statsd/request_tracking.rb

Class Method Summary collapse

Class Method Details

.enable(logger: nil) ⇒ Object



6
7
8
9
# File 'lib/inst_statsd/request_tracking.rb', line 6

def self.enable(logger: nil)
  @logger = RequestLogger.new(logger)
  track_timing
end

.finalize_processing(*args) ⇒ Object



22
23
24
25
26
27
# File 'lib/inst_statsd/request_tracking.rb', line 22

def self.finalize_processing *args
  request_stat = InstStatsd::RequestStat.new(*args)
  request_stat.stats = @cookies.map { |(name, cookie)| [name, Counter.counters[name].finalize_count(cookie)] }.to_h
  request_stat.report
  @logger.log(request_stat)
end

.start_processing(*_args) ⇒ Object



18
19
20
# File 'lib/inst_statsd/request_tracking.rb', line 18

def self.start_processing(*_args)
  @cookies = Counter.counters.map { |(name, counter)| [name, counter.start] }
end

.track_timing ⇒ Object



13
14
15
16
# File 'lib/inst_statsd/request_tracking.rb', line 13

def self.track_timing
  ActiveSupport::Notifications.subscribe(/start_processing\.action_controller/, &method(:start_processing))
  ActiveSupport::Notifications.subscribe(/process_action\.action_controller/, &method(:finalize_processing))
end