Top Level Namespace

Defined Under Namespace

Modules: Filelock

Instance Method Summary collapse

Instance Method Details

#Filelock(lockname, options = {}, &block) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/filelock.rb', line 6

def Filelock(lockname, options = {}, &block)
  lockname = lockname.path if lockname.is_a?(Tempfile)
  File.open(lockname, File::RDWR|File::CREAT, 0644) do |file|
    Thread.pass until file.flock(File::LOCK_EX)
    Timeout::timeout(options.fetch(:timeout, 60)) { yield }
  end
end