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



4
5
6
7
# File 'lib/inst_statsd/request_tracking.rb', line 4

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

.finalize_processing(*args) ⇒ Object



20
21
22
23
24
25
# File 'lib/inst_statsd/request_tracking.rb', line 20

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



16
17
18
# File 'lib/inst_statsd/request_tracking.rb', line 16

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

.track_timing ⇒ Object



11
12
13
14
# File 'lib/inst_statsd/request_tracking.rb', line 11

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