class JustOneLock::BlockingLocker
Constants
- DEFAULT_TIMEOUT
Attributes
timeout[RW]
Public Class Methods
new(timeout: DEFAULT_TIMEOUT)
click to toggle source
# File lib/just_one_lock/blocking_locker.rb, line 8 def initialize(timeout: DEFAULT_TIMEOUT) @timeout = timeout end
Public Instance Methods
lock(lock_path, &block)
click to toggle source
# File lib/just_one_lock/blocking_locker.rb, line 12 def lock(lock_path, &block) result = nil File.open(lock_path, File::RDWR|File::CREAT, 0644) do |f| Timeout::timeout(@timeout, JustOneLock::AlreadyLocked) { f.flock(File::LOCK_EX) } result = run(f, lock_path, &block) end result end