module FoundersToolkit::Util::Lockable
Public Instance Methods
locked(method_name, ttl, name_proc)
click to toggle source
# File lib/founders_toolkit/util/lockable.rb, line 23 def locked(method_name, ttl, name_proc) define_method("locked_#{method_name}") do |*args| lock_name = instance_exec(&name_proc) lock = locker.lock(lock_name, ttl) return unless lock begin __send__("unlocked_#{method_name}".to_sym, *args) ensure locker.unlock(lock) end end alias_method "unlocked_#{method_name}".to_sym, method_name.to_sym alias_method method_name.to_sym, "locked_#{method_name}".to_sym end
locker()
click to toggle source
# File lib/founders_toolkit/util/lockable.rb, line 14 def locker @locker ||= Redlock::Client.new([Redis.new]) end
with_lock(name, ttl, &block)
click to toggle source
# File lib/founders_toolkit/util/lockable.rb, line 18 def with_lock(name, ttl, &block) locker.lock!(name, ttl, &block) end