Class: RequestTrail::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/request_trail/collector.rb

Constant Summary collapse

THREAD_KEY =
:request_trail_collector

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCollector

Returns a new instance of Collector.



22
23
24
25
26
27
28
29
30
# File 'lib/request_trail/collector.rb', line 22

def initialize
  @started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  @sql_count = 0
  @sql_duration_ms = 0.0
  @cache_hits = 0
  @cache_misses = 0
  @cache_writes = 0
  @cache_duration_ms = 0.0
end

Instance Attribute Details

#cache_duration_msObject (readonly)

Returns the value of attribute cache_duration_ms.



7
8
9
# File 'lib/request_trail/collector.rb', line 7

def cache_duration_ms
  @cache_duration_ms
end

#cache_hitsObject (readonly)

Returns the value of attribute cache_hits.



7
8
9
# File 'lib/request_trail/collector.rb', line 7

def cache_hits
  @cache_hits
end

#cache_missesObject (readonly)

Returns the value of attribute cache_misses.



7
8
9
# File 'lib/request_trail/collector.rb', line 7

def cache_misses
  @cache_misses
end

#cache_writesObject (readonly)

Returns the value of attribute cache_writes.



7
8
9
# File 'lib/request_trail/collector.rb', line 7

def cache_writes
  @cache_writes
end

#sql_countObject (readonly)

Returns the value of attribute sql_count.



7
8
9
# File 'lib/request_trail/collector.rb', line 7

def sql_count
  @sql_count
end

#sql_duration_msObject (readonly)

Returns the value of attribute sql_duration_ms.



7
8
9
# File 'lib/request_trail/collector.rb', line 7

def sql_duration_ms
  @sql_duration_ms
end

Class Method Details

.currentObject



10
11
12
# File 'lib/request_trail/collector.rb', line 10

def self.current
  Thread.current[THREAD_KEY]
end

.startObject



14
15
16
# File 'lib/request_trail/collector.rb', line 14

def self.start
  Thread.current[THREAD_KEY] = new
end

.stopObject



18
19
20
# File 'lib/request_trail/collector.rb', line 18

def self.stop
  Thread.current[THREAD_KEY] = nil
end

Instance Method Details

#elapsed_msObject



47
48
49
50
# File 'lib/request_trail/collector.rb', line 47

def elapsed_ms
  elapsed = Process.clock_gettime(Process::CLOCK_MONOTONIC) - @started_at
  (elapsed * 1000).round(2)
end

#record_cache_read(hit:, duration_ms:) ⇒ Object



37
38
39
40
# File 'lib/request_trail/collector.rb', line 37

def record_cache_read(hit:, duration_ms:)
  hit ? @cache_hits += 1 : @cache_misses += 1
  @cache_duration_ms += duration_ms
end

#record_cache_write(duration_ms:) ⇒ Object



42
43
44
45
# File 'lib/request_trail/collector.rb', line 42

def record_cache_write(duration_ms:)
  @cache_writes += 1
  @cache_duration_ms += duration_ms
end

#record_sql(duration_ms) ⇒ Object



32
33
34
35
# File 'lib/request_trail/collector.rb', line 32

def record_sql(duration_ms)
  @sql_count += 1
  @sql_duration_ms += duration_ms
end