module Osbourne::Locks::Base
Constants
- DEFAULT_HARD_TTL
- DEFAULT_SOFT_TTL
Attributes
hard_ttl[RW]
soft_ttl[RW]
Public Class Methods
new(options={})
click to toggle source
# File lib/osbourne/locks/base.rb, line 13 def initialize(options={}) self.soft_ttl = options.fetch(:soft_ttl, DEFAULT_SOFT_TTL) self.hard_ttl = options.fetch(:hard_ttl, DEFAULT_HARD_TTL) end
Public Instance Methods
hard_lock(id)
click to toggle source
# File lib/osbourne/locks/base.rb, line 22 def hard_lock(id) lock!(lock_key(id), hard_ttl) end
soft_lock(id)
click to toggle source
# File lib/osbourne/locks/base.rb, line 18 def soft_lock(id) lock(lock_key(id), soft_ttl) end
try_with_lock(id, hard_lock: false) { || ... }
click to toggle source
# File lib/osbourne/locks/base.rb, line 30 def try_with_lock(id, hard_lock: false) if lock(lock_key(id), soft_ttl) begin yield unlock(id) rescue => e # rubocop:disable Style/RescueStandardError unlock(id) raise e end hard_lock(id) if hard_lock true else false end end
unlock(id)
click to toggle source
# File lib/osbourne/locks/base.rb, line 26 def unlock(id) unlock!(lock_key(id)) end
Protected Instance Methods
lock(_key, _ttl)
click to toggle source
# File lib/osbourne/locks/base.rb, line 49 def lock(_key, _ttl) raise NotImplementedError end
lock!(_key, _ttl)
click to toggle source
# File lib/osbourne/locks/base.rb, line 53 def lock!(_key, _ttl) raise NotImplementedError end
unlock!(_key)
click to toggle source
# File lib/osbourne/locks/base.rb, line 57 def unlock!(_key) raise NotImplementedError end
Private Instance Methods
lock_key(id)
click to toggle source
# File lib/osbourne/locks/base.rb, line 65 def lock_key(id) "osbourne:lock:#{id}" end