Module: Lockable

Defined in:
lib/lockable.rb,
lib/lockable/version.rb

Constant Summary collapse

DEFAULT_LOCK_TIMEOUT =
5 * 60 * 60
VERSION =
'0.0.1'

Class Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.lock_timeoutObject



12
13
14
# File 'lib/lockable.rb', line 12

def lock_timeout
  @lock_timeout || DEFAULT_LOCK_TIMEOUT
end

.redisObject

Returns the value of attribute redis.



7
8
9
# File 'lib/lockable.rb', line 7

def redis
  @redis
end

Instance Method Details

#lock!(holder) ⇒ Object

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
26
27
28
# File 'lib/lockable.rb', line 18

def lock!(holder)
  raise ArgumentError unless holder

  return true if acquire_lock(holder)

  if locked? and lock_holder == holder.to_s
    return extend_lock
  end

  false
end

#lock_holderObject



38
39
40
# File 'lib/lockable.rb', line 38

def lock_holder
  redis.get(lock_key)
end

#lock_timeoutObject



42
43
44
# File 'lib/lockable.rb', line 42

def lock_timeout
  redis.ttl(lock_key).to_i
end

#locked?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/lockable.rb', line 30

def locked?
  !!lock_holder
end

#unlock!Object



34
35
36
# File 'lib/lockable.rb', line 34

def unlock!
  !!redis.del(lock_key)
end