class RedisLocker::MethodLocker

Public Class Methods

new(model_locker, method_name) click to toggle source
Calls superclass method RedisLocker::Locker::new
# File lib/redis_locker/method_locker.rb, line 5
def initialize(model_locker, method_name)
  @model_locker = model_locker
  @key_string = "LOCKER:#{model_locker.key_string}:#{method_name}"
  super
end

Public Instance Methods

lock() click to toggle source
# File lib/redis_locker/method_locker.rb, line 11
def lock
  return false if locked?

  @model_locker.lock
  redis.sadd(@key_string, @instance_hash)
end
lock!() click to toggle source
# File lib/redis_locker/method_locker.rb, line 18
def lock!
  raise Errors::AlreadyLocked if locked?

  @model_locker.lock
  lock
end
locked?() click to toggle source
# File lib/redis_locker/method_locker.rb, line 25
def locked?
  redis.scard(@key_string) > 1
end
unlock() click to toggle source
# File lib/redis_locker/method_locker.rb, line 29
def unlock
  return true unless locked?

  (redis.srem(@key_string, @instance_hash) && @model_locker.unlock)
end