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
- .lock_timeout ⇒ Object
-
.redis ⇒ Object
Returns the value of attribute redis.
Instance Method Summary collapse
- #lock!(holder) ⇒ Object
- #lock_holder ⇒ Object
- #lock_timeout ⇒ Object
- #locked? ⇒ Boolean
- #unlock! ⇒ Object
Class Attribute Details
.lock_timeout ⇒ Object
12 13 14 |
# File 'lib/lockable.rb', line 12 def lock_timeout @lock_timeout || DEFAULT_LOCK_TIMEOUT end |
.redis ⇒ Object
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
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_holder ⇒ Object
38 39 40 |
# File 'lib/lockable.rb', line 38 def lock_holder redis.get(lock_key) end |
#lock_timeout ⇒ Object
42 43 44 |
# File 'lib/lockable.rb', line 42 def lock_timeout redis.ttl(lock_key).to_i end |
#locked? ⇒ 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 |