Top Level Namespace
Defined Under Namespace
Modules: Filelock
Instance Method Summary collapse
Instance Method Details
#Filelock(lockname, options = {}, &block) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/filelock.rb', line 8 def Filelock(lockname, = {}, &block) lockname = lockname.path if lockname.is_a?(Tempfile) File.open(lockname, File::RDWR|File::CREAT, 0644) do |file| Thread.pass until Timeout::timeout(.fetch(:wait, 60*60*24), Filelock::WaitTimeout) { file.flock(File::LOCK_EX) } Timeout::timeout(.fetch(:timeout, 60), Filelock::ExecTimeout) { yield } end end |