Module: AdvisoryLock::Implementation

Included in:
AdvisoryLock
Defined in:
lib/tracker/advisory_lock.rb

Instance Method Summary collapse

Instance Method Details

#exclusive(lock_identifier, connection = ActiveRecord::Base.connection, &_block) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/tracker/advisory_lock.rb', line 15

def exclusive(lock_identifier, connection = ActiveRecord::Base.connection, &_block)
  if obtained_lock?(lock_identifier, connection)
    begin
      yield
    ensure
      release_lock(lock_identifier, connection)
    end
  else
    raise "Cannot get lock #{lock_identifier.inspect}"
  end
end