module Spruz::Once
Public Instance Methods
only_once(lock_filename = nil, locking_constant = nil) { || ... }
click to toggle source
# File lib/spruz/once.rb, line 7 def only_once(lock_filename = nil, locking_constant = nil) lock_filename ||= $0 locking_constant ||= LOCK_EX f = File.new(lock_filename, RDONLY) f.flock(locking_constant) and yield ensure if f f.flock LOCK_UN f.close end end
try_only_once(lock_filename = nil, locking_constant = nil, &block)
click to toggle source
# File lib/spruz/once.rb, line 19 def try_only_once(lock_filename = nil, locking_constant = nil, &block) only_once(lock_filename, locking_constant || LOCK_EX | LOCK_NB, &block) end