Module: RaceGuard::DBLockAuditor::ReadModifyWrite

Defined in:
lib/race_guard/db_lock_auditor/read_modify_write.rb

Defined Under Namespace

Modules: Patches, ReadModWriteImpl, RelationPatches

Constant Summary collapse

DETECTOR =
'db_lock_auditor:read_modify_write'
INSTALL_MUTEX =
Mutex.new

Class Method Summary collapse

Class Method Details

.install!Object



321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/race_guard/db_lock_auditor/read_modify_write.rb', line 321

def install!
  return unless defined?(::ActiveRecord::Base)

  INSTALL_MUTEX.synchronize do
    base_missing = !::ActiveRecord::Base.ancestors.include?(Patches)
    rel_missing = defined?(::ActiveRecord::Relation) &&
                  !::ActiveRecord::Relation.ancestors.include?(RelationPatches)
    return unless base_missing || rel_missing

    ::ActiveRecord::Base.prepend(Patches) if base_missing
    ::ActiveRecord::Relation.prepend(RelationPatches) if rel_missing
    @installed = true
  end
  self
end