Module: DeadBro::ArObjectTracker

Defined in:
lib/dead_bro/ar_object_tracker.rb

Constant Summary collapse

THREAD_KEY =
:dead_bro_ar_objects

Class Method Summary collapse

Class Method Details

.start_request_trackingObject



21
22
23
# File 'lib/dead_bro/ar_object_tracker.rb', line 21

def self.start_request_tracking
  Thread.current[THREAD_KEY] = 0
end

.stop_request_trackingObject



25
26
27
28
29
# File 'lib/dead_bro/ar_object_tracker.rb', line 25

def self.stop_request_tracking
  Thread.current[THREAD_KEY]
ensure
  Thread.current[THREAD_KEY] = nil
end

.subscribe!Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/dead_bro/ar_object_tracker.rb', line 9

def self.subscribe!
  return if @subscribed
  @subscribed = true
  ActiveSupport::Notifications.subscribe("instantiation.active_record") do |_name, _started, _finished, _id, data|
    count = Thread.current[THREAD_KEY]
    next unless count
    Thread.current[THREAD_KEY] = count + (data[:record_count] || 1).to_i
  end
rescue StandardError
  # Never raise from instrumentation install
end