Class: Flexirest::Instrumentation

Inherits:
ActiveSupport::LogSubscriber
  • Object
show all
Defined in:
lib/flexirest/instrumentation.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.calls_madeObject



25
26
27
# File 'lib/flexirest/instrumentation.rb', line 25

def self.calls_made
  Thread.current[:flexirest_calls_made] ||= 0
end

.calls_made=(value) ⇒ Object



21
22
23
# File 'lib/flexirest/instrumentation.rb', line 21

def self.calls_made=(value)
  Thread.current[:flexirest_calls_made] = value
end

.resetObject



29
30
31
32
# File 'lib/flexirest/instrumentation.rb', line 29

def self.reset
  Thread.current[:flexirest_time_spent] = 0
  Thread.current[:flexirest_calls_made] = 0
end

.time_spentObject



17
18
19
# File 'lib/flexirest/instrumentation.rb', line 17

def self.time_spent
  Thread.current[:flexirest_time_spent] ||= 0
end

.time_spent=(value) ⇒ Object

These counters accumulate per request and are reported/reset per controller action. Held per-thread so concurrent requests each track their own totals instead of sharing (and losing updates to) one class variable.



13
14
15
# File 'lib/flexirest/instrumentation.rb', line 13

def self.time_spent=(value)
  Thread.current[:flexirest_time_spent] = value
end

Instance Method Details

#loggerObject



34
35
36
# File 'lib/flexirest/instrumentation.rb', line 34

def logger
  Flexirest::Logger
end

#request_call(event) ⇒ Object



3
4
5
6
7
8
# File 'lib/flexirest/instrumentation.rb', line 3

def request_call(event)
  self.class.time_spent += event.duration
  self.class.calls_made += 1
  name = '%s (%.1fms)' % [Flexirest.name, event.duration]
  Flexirest::Logger.debug "  \033[1;4;32m#{name}\033[0m #{event.payload[:name]}" unless event.payload[:quiet]
end