module SidekiqUniqueJobs

def config

Returns:
  • (SidekiqUniqueJobs::Config) - the gem configuration
def config
  @config ||= reset! # rubocop:disable ThreadSafety/ClassInstanceVariable
end

def configure(options = {})

Other tags:
    Yield: - control to the caller when given block

Options Hash: (**options)
  • :logger (Logger) --
  • :lock_prefix (String) --
  • :enabled (true, false) --
  • :lock_ttl (Integer) --
  • :lock_timeout (Integer) --

Parameters:
  • options (Hash) -- global gem options
def configure(options = {})
  if block_given?
    yield config
  else
    options.each do |key, val|
      config.send(:"#{key}=", val)
    end
  end
end

def constantize(str)

Returns:
  • (Sidekiq::Job) -
def constantize(str)
  return str.class             if str.is_a?(Sidekiq::Job) # sidekiq v6.x
  return str                   unless str.is_a?(String)
  return Object.const_get(str) unless str.include?("::")
  names = str.split("::")
  names.shift if names.empty? || names.first.empty?
  names.inject(Object) do |constant, name|
    # the false flag limits search for name to under the constant namespace
    #   which mimics Rails' behaviour
    constant.const_get(name, false)
  end
end

def disable!(&block)

Other tags:
    Yieldreturn: - temporarily disable sidekiq unique jobs while executing a block of code

Returns:
  • (true, false) - the previous value of enable when given a block
  • (false) - when not given a block
def disable!(&block)
  toggle(false, &block)
end

def disabled?

Returns:
  • (false) - when config.enabled is true
  • (true) - when config.enabled is false
def disabled?
  !enabled?
end

def enable!(&block)

Other tags:
    Yieldreturn: - temporarily enable sidekiq unique jobs while executing a block of code

Returns:
  • (true, false) - the previous value of enable when given a block
  • (true) - when not given a block
def enable!(&block)
  toggle(true, &block)
end

def enabled?

Returns:
  • (false) - when config.enabled is false
  • (true) - when config.enabled is true
def enabled?
  config.enabled
end

def fetch_redis_version

Returns:
  • (String) - a string like `5.0.2`
def fetch_redis_version
  Sidekiq.default_configuration.redis_info["redis_version"]
end

def locks

Returns:
  • (Hash) - the configured locks
def locks
  config.locks
end

def logger

Returns:
  • (Logger) - the configured logger
def logger
  config.logger
end

def logger=(other)

Returns:
  • (Logger) - the new logger

Parameters:
  • other (Logger) -- another logger
def logger=(other)
  config.logger = other
end

def logging?

Returns:
  • (true, false) -
def logging?
  config.logger_enabled
end

def now

Returns:
  • (Time) -
def now
  Time.now
end

def now_f

Returns:
  • (Float) -
def now_f
  now.to_f
end

def reflect

Other tags:
    Yieldparam: x - used to configure notifications

Returns:
  • (void) -
def reflect
  yield reflections if block_given?
end

def reflections

Returns:
  • (Reflections) -
def reflections
  @reflections ||= Reflections.new # rubocop:disable ThreadSafety/ClassInstanceVariable
end

def reset!

Returns:
  • (SidekiqUniqueJobs::Config) - a default gem configuration
def reset!
  @config = SidekiqUniqueJobs::Config.default # rubocop:disable ThreadSafety/ClassInstanceVariable
end

def safe_constantize(str)

Returns:
  • (Sidekiq::Job, String) -
def safe_constantize(str)
  constantize(str)
rescue NameError => ex
  case ex.message
  when /uninitialized constant/
    str
  else
    raise
  end
end

def strategies

Returns:
  • (Hash) - the configured locks
def strategies
  config.strategies
end

def toggle(enabled)

Other tags:
    Api: - private
def toggle(enabled)
  if block_given?
    enabled_was = config.enabled
    config.enabled = enabled
    yield
    config.enabled = enabled_was
  else
    config.enabled = enabled
  end
end

def use_config(tmp_config = {})

Other tags:
    Yield: - control to the caller

Returns:
  • (void) -

Parameters:
  • tmp_config (Hash) -- the temporary configuration to use
def use_config(tmp_config = {})
  raise ::ArgumentError, "#{name}.#{__method__} needs a block" unless block_given?
  old_config = config.to_h
  reset!
  configure(tmp_config)
  yield
ensure
  reset!
  configure(old_config.to_h)
end

def validate_worker(options)

Returns:
  • (Boolean) -

Parameters:
  • options (Hash) -- the `sidekiq_options` to validate
def validate_worker(options)
  raise NotUniqueWorker, options unless (lock_type = options[LOCK])
  lock_class = locks[lock_type]
  lock_class.validate_options(options)
end

def validate_worker!(options)

Raises:
  • (InvalidWorker) - when {#validate_worker} returns false or nil

Parameters:
  • options (Hash) -- the `sidekiq_options` to validate
def validate_worker!(options)
  lock_config = validate_worker(options)
  raise InvalidWorker, lock_config unless lock_config.errors.empty?
end

def version

Returns:
  • (String) - the current gem version
def version
  VERSION
end