class WithTransactionalLock::Mixin::AdvisoryLockBase

Attributes

connection[R]
lock_name[R]

Public Class Methods

new(connection, lock_name) click to toggle source
# File lib/with_transactional_lock/mixin.rb, line 37
def initialize(connection, lock_name)
  @connection = connection
  @lock_name = lock_name
end

Public Instance Methods

yield_with_lock() { || ... } click to toggle source
# File lib/with_transactional_lock/mixin.rb, line 42
def yield_with_lock
  connection.transaction do
    acquire_lock
    yield
  end
end

Private Instance Methods

db_lock_name() click to toggle source
# File lib/with_transactional_lock/mixin.rb, line 51
def db_lock_name
  @db_lock_name ||= Digest::SHA256.digest(lock_name)[0, 8].unpack1('q')
end