module Isolator
def adapters
def adapters @adapters ||= Isolator::SimpleHashie.new end
def clear_transactions!
def clear_transactions! Thread.current[:isolator_transactions] = 0 end
def config
def config @config ||= Configuration.new end
def configure
def configure yield config end
def decr_transactions!
def decr_transactions! Thread.current[:isolator_transactions] = Thread.current.fetch(:isolator_transactions) - 1 finish! if Thread.current.fetch(:isolator_transactions) == (transactions_threshold - 1) end
def disable
def disable return yield if disabled? res = nil begin disable! res = yield ensure enable! end res end
def disable!
def disable! Thread.current[:isolator_disabled] = true end
def disabled?
def disabled? Thread.current[:isolator_disabled] == true end
def enable
def enable return yield if enabled? res = nil begin enable! res = yield ensure disable! end res end
def enable!
def enable! Thread.current[:isolator_disabled] = false end
def enabled?
def enabled? !disabled? end
def incr_transactions!
def incr_transactions! Thread.current[:isolator_transactions] = Thread.current.fetch(:isolator_transactions, 0) + 1 start! if Thread.current.fetch(:isolator_transactions) == transactions_threshold end
def notify(exception:, backtrace:)
def notify(exception:, backtrace:) Notifier.new(exception, backtrace).call end
def transactions_threshold
def transactions_threshold Thread.current.fetch(:isolator_threshold, 1) end
def transactions_threshold=(val)
def transactions_threshold=(val) Thread.current[:isolator_threshold] = val end
def within_transaction?
def within_transaction? Thread.current.fetch(:isolator_transactions, 0) >= transactions_threshold end