module ActsAsLockableBy::Lockable::InstanceMethods
Public Instance Methods
lock(locked_by_id)
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 39 def lock(locked_by_id) # Set if not exist redis.set(lock_key, locked_by_id, ex: ttl, nx: true) end
lock!(locked_by_id)
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 44 def lock!(locked_by_id) lock(locked_by_id) || raise(LockError) end
locked?()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 52 def locked? locked_by_id.present? end
locked_by_id()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 48 def locked_by_id redis.get(lock_key) end
renew_lock(locked_by_id)
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 68 def renew_lock(locked_by_id) # Set if only exist redis.eval( renew_lock_atomic_script, keys: [lock_key], argv: [locked_by_id, 'EX', ttl, 'XX'] ) == 'OK' end
unlock(locked_by_id)
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 56 def unlock(locked_by_id) redis.eval( unlock_atomic_script, keys: [lock_key], argv: [locked_by_id] ) == 1 end
unlock!(locked_by_id)
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 64 def unlock!(locked_by_id) unlock(locked_by_id) || raise(UnLockError) end
Private Instance Methods
lock_id_value()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 87 def lock_id_value send(lock_id) end
lock_key()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 83 def lock_key "ActsAsLockableBy:#{self.class.name}:#{lock_id_value}" end
redis()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 79 def redis ActsAsLockableBy.configuration.redis end
renew_lock_atomic_script()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 102 def renew_lock_atomic_script <<LUA_SCRIPT redis.log(redis.LOG_WARNING, ARGV[2]) if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("set", KEYS[1], ARGV[1], ARGV[2], ARGV[3], ARGV[4]) else return 0 end LUA_SCRIPT end
unlock_atomic_script()
click to toggle source
# File lib/acts_as_lockable_by/lockable.rb, line 91 def unlock_atomic_script <<LUA_SCRIPT if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del",KEYS[1]) else return 0 end LUA_SCRIPT end