class Locksy::BaseLock
Attributes
_clock[W]
allow injection of a clock to assist testing do not call or set this outside of tests
default_expiry[R]
default_extension[R]
lock_name[R]
logger[W]
owner[R]
Public Class Methods
new(lock_name: generate_default_lock_name, owner: generate_default_owner, default_expiry: 10, default_extension: 10, logger: nil, **_args)
click to toggle source
# File lib/locksy/base_lock.rb, line 19 def initialize(lock_name: generate_default_lock_name, owner: generate_default_owner, default_expiry: 10, default_extension: 10, logger: nil, **_args) @owner = owner @default_expiry = default_expiry @default_extension = default_extension @lock_name = lock_name @logger = logger end
shutting_down?()
click to toggle source
# File lib/locksy/base_lock.rb, line 46 def self.shutting_down? @_shutting_down end
Public Instance Methods
obtain_lock(expire_after: default_expiry, **_args)
click to toggle source
disabling here because we have a no-op implementation… we're expecting this class to be extended rubocop:disable Style/EmptyMethod
# File lib/locksy/base_lock.rb, line 31 def obtain_lock(expire_after: default_expiry, **_args); end
refresh_lock(expire_after: default_extension, **_args)
click to toggle source
# File lib/locksy/base_lock.rb, line 33 def refresh_lock(expire_after: default_extension, **_args); end
release_lock(**_args)
click to toggle source
# File lib/locksy/base_lock.rb, line 35 def release_lock(**_args); end
with_lock(expire_after: default_expiry, **args) { || ... }
click to toggle source
rubocop:enable Style/EmptyMethod
# File lib/locksy/base_lock.rb, line 38 def with_lock(expire_after: default_expiry, **args) if (lock_obtained = obtain_lock(expire_after: expire_after, **args)) yield end ensure release_lock if lock_obtained end
Protected Instance Methods
expiry(after)
click to toggle source
# File lib/locksy/base_lock.rb, line 64 def expiry(after) now + after end
generate_default_lock_name()
click to toggle source
# File lib/locksy/base_lock.rb, line 72 def generate_default_lock_name "#{SecureRandom.base64(12)}.#{generate_default_owner}" end
generate_default_owner()
click to toggle source
# File lib/locksy/base_lock.rb, line 68 def generate_default_owner "#{Thread.current.object_id}-#{Process.pid}@#{Socket.gethostname}" end
logger()
click to toggle source
# File lib/locksy/base_lock.rb, line 60 def logger @logger || Locksy.logger end
now()
click to toggle source
# File lib/locksy/base_lock.rb, line 56 def now (@_clock ||= Time).now.to_f end