Class: JustOneLock::NonBlockingLocker

Inherits:
BaseLocker
  • Object
show all
Defined in:
lib/just_one_lock/non_blocking_locker.rb

Instance Method Summary collapse

Methods inherited from BaseLocker

#already_locked

Instance Method Details

#lock(lock_path, &block) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/just_one_lock/non_blocking_locker.rb', line 2

def lock(lock_path, &block)
  result = nil

  File.open(lock_path, File::RDWR|File::CREAT, 0644) do |f|
    if f.flock(File::LOCK_NB|File::LOCK_EX)
      result = run(f, lock_path, &block)
    else
      fail JustOneLock::AlreadyLocked
    end
  end

  result
end