Method: DynaModel::Extensions::Lock.lock

Defined in:
lib/dyna_model/extensions/lock.rb

.lock(lock_name, options = {}, &block) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/dyna_model/extensions/lock.rb', line 28

def self.lock(lock_name, options={}, &block)
  lock_acquired = false
  if lock_obj_acquired = self.acquire(lock_name, options)
    lock_acquired = true
    if block
      begin
        result = (block.arity == 1) ? block.call(lock_obj_acquired) : block.call
      ensure
        release(lock_name) if lock_acquired
      end
    end
    result
  end
end