class WithAdvisoryLock::Flock
Public Instance Methods
file_io()
click to toggle source
# File lib/with_advisory_lock/flock.rb, line 14 def file_io @file_io ||= begin FileUtils.touch(filename) File.open(filename, 'r+') end end
filename()
click to toggle source
# File lib/with_advisory_lock/flock.rb, line 5 def filename @filename ||= begin safe = lock_str.to_s.gsub(/[^a-z0-9]/i, '') fn = ".lock-#{safe}-#{stable_hashcode(lock_str)}" # Let the user specify a directory besides CWD. ENV['FLOCK_DIR'] ? File.expand_path(fn, ENV['FLOCK_DIR']) : fn end end
release_lock()
click to toggle source
# File lib/with_advisory_lock/flock.rb, line 28 def release_lock 0 == file_io.flock(File::LOCK_UN) end
try_lock()
click to toggle source
# File lib/with_advisory_lock/flock.rb, line 21 def try_lock if transaction raise ArgumentError, 'transaction level locks are not supported on SQLite' end 0 == file_io.flock((shared ? File::LOCK_SH : File::LOCK_EX) | File::LOCK_NB) end