module Isolator::ActiveSupportSubscriber

ActiveSupport notifications listener Used for ActiveRecord and ROM::SQL (when instrumentation is available)

Constants

FINISH_PATTERN
START_PATTERN

Public Class Methods

subscribe!(event) click to toggle source
# File lib/isolator/orm_adapters/active_support_subscriber.rb, line 10
def self.subscribe!(event)
  ::ActiveSupport::Notifications.subscribe(event) do |_name, _start, _finish, _id, query|
    connection_id = query[:connection_id] || query[:connection]&.object_id || 0
    Isolator.incr_transactions!(connection_id) if START_PATTERN.match?(query[:sql])
    Isolator.decr_transactions!(connection_id) if FINISH_PATTERN.match?(query[:sql])
  end
end