Module: GrapeRailsLogger::Timings

Defined in:
lib/grape_rails_logger/timings.rb,
sig/grape_rails_logger.rbs

Overview

Thread-safe storage for DB timing metrics per request

Class Method Summary collapse

Class Method Details

.append_db_runtime(event) ⇒ void

This method returns an undefined value.

Parameters:

  • event (ActiveSupport::Notifications::Event)


44
45
46
47
48
49
50
# File 'lib/grape_rails_logger/timings.rb', line 44

def self.append_db_runtime(event)
  state = execution_state
  return unless state[:grape_db_tracking]

  state[:grape_db_runtime] = (state[:grape_db_runtime] || 0) + event.duration
  state[:grape_db_calls] = (state[:grape_db_calls] || 0) + 1
end

.db_callsInteger

Returns:

  • (Integer)


40
41
42
# File 'lib/grape_rails_logger/timings.rb', line 40

def self.db_calls
  execution_state[:grape_db_calls] ||= 0
end

.db_runtimeFloat

Returns:

  • (Float)


36
37
38
# File 'lib/grape_rails_logger/timings.rb', line 36

def self.db_runtime
  execution_state[:grape_db_runtime] ||= 0
end

.execution_stateObject

Returns:

  • (Object)


7
8
9
# File 'lib/grape_rails_logger/timings.rb', line 7

def self.execution_state
  ActiveSupport::IsolatedExecutionState
end

.grape_request_active?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/grape_rails_logger/timings.rb', line 32

def self.grape_request_active?
  !!execution_state[:grape_db_tracking]
end

.reset_db_runtimevoid

This method returns an undefined value.



16
17
18
19
20
# File 'lib/grape_rails_logger/timings.rb', line 16

def self.reset_db_runtime
  state = execution_state
  state[:grape_db_runtime] = 0
  state[:grape_db_calls] = 0
end

.track_grape_request {|arg0| ... } ⇒ Object

Yields:

Yield Parameters:

  • arg0 (void)

Yield Returns:

  • (Object)

Returns:

  • (Object)


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

def self.track_grape_request
  state = execution_state
  previous_tracking = state[:grape_db_tracking]
  state[:grape_db_tracking] = true
  reset_db_runtime
  yield
ensure
  state[:grape_db_tracking] = previous_tracking
end