Module: SidekiqUniqueJobs

Extended by:
Middleware
Includes:
Connection
Defined in:
lib/sidekiq_unique_jobs/constants.rb,
lib/sidekiq_unique_jobs/cli.rb,
lib/sidekiq_unique_jobs/job.rb,
lib/sidekiq_unique_jobs/web.rb,
lib/sidekiq_unique_jobs/util.rb,
lib/sidekiq_unique_jobs/digests.rb,
lib/sidekiq_unique_jobs/logging.rb,
lib/sidekiq_unique_jobs/scripts.rb,
lib/sidekiq_unique_jobs/timeout.rb,
lib/sidekiq_unique_jobs/version.rb,
lib/sidekiq_unique_jobs/locksmith.rb,
lib/sidekiq_unique_jobs/connection.rb,
lib/sidekiq_unique_jobs/exceptions.rb,
lib/sidekiq_unique_jobs/middleware.rb,
lib/sidekiq_unique_jobs/normalizer.rb,
lib/sidekiq_unique_jobs/unlockable.rb,
lib/sidekiq_unique_jobs/on_conflict.rb,
lib/sidekiq_unique_jobs/unique_args.rb,
lib/sidekiq_unique_jobs/web/helpers.rb,
lib/sidekiq_unique_jobs/version_check.rb,
lib/sidekiq_unique_jobs/lock/base_lock.rb,
lib/sidekiq_unique_jobs/on_conflict/log.rb,
lib/sidekiq_unique_jobs/client/middleware.rb,
lib/sidekiq_unique_jobs/on_conflict/raise.rb,
lib/sidekiq_unique_jobs/server/middleware.rb,
lib/sidekiq_unique_jobs/lock/until_expired.rb,
lib/sidekiq_unique_jobs/on_conflict/reject.rb,
lib/sidekiq_unique_jobs/timeout/calculator.rb,
lib/sidekiq_unique_jobs/lock/until_executed.rb,
lib/sidekiq_unique_jobs/on_conflict/replace.rb,
lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb,
lib/sidekiq_unique_jobs/lock/until_executing.rb,
lib/sidekiq_unique_jobs/lock/while_executing.rb,
lib/sidekiq_unique_jobs/on_conflict/strategy.rb,
lib/sidekiq_unique_jobs/options_with_fallback.rb,
lib/sidekiq_unique_jobs/on_conflict/reschedule.rb,
lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb,
lib/sidekiq_unique_jobs/on_conflict/null_strategy.rb,
lib/sidekiq_unique_jobs/lock/while_executing_reject.rb,
lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb

Overview

Contains configuration and utility methods that belongs top level

Author:

Defined Under Namespace

Modules: Client, Connection, Digests, Job, Logging, Middleware, Normalizer, OnConflict, OptionsWithFallback, Scripts, Server, SidekiqWorkerMethods, Timeout, Unlockable, Util, Web Classes: Cli, Conflict, Lock, Locksmith, ScriptError, UniqueArgs, UnknownLock, VersionCheck

Constant Summary collapse

VERSION =
"6.0.22"
Config =
Concurrent::MutableStruct.new(
  :default_lock_timeout,
  :enabled,
  :unique_prefix,
  :logger,
)

Class Method Summary collapse

Methods included from Middleware

configure_client_middleware, configure_middleware, configure_server_middleware, extended

Methods included from Connection

included, #redis

Class Method Details

.configObject

The current configuration (See: configure on how to configure)



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

def config
  # Arguments here need to match the definition of the new class (see above)
  @config ||= Config.new(
    0,
    true,
    "uniquejobs",
    Sidekiq.logger,
  )
end

.configure(options = {}) { ... } ⇒ Object

Configure the gem

This is usually called once at startup of an application

Parameters:

  • options (Hash) (defaults to: {})

    global gem options

Options Hash (options):

  • :default_lock_timeout (Integer) — default: default is 0
  • :enabled (true, false) — default: default is true
  • :unique_prefix (String) — default: default is 'uniquejobs'
  • :logger (Logger) — default: default is Sidekiq.logger

Yields:

  • control to the caller when given block



75
76
77
78
79
80
81
82
83
# File 'lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb', line 75

def configure(options = {})
  if block_given?
    yield config
  else
    options.each do |key, val|
      config.send("#{key}=", val)
    end
  end
end

.loggerLogger

The current logger

Returns:

  • (Logger)

    the configured logger



32
33
34
# File 'lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb', line 32

def logger
  config.logger
end

.logger=(other) ⇒ Object

Set a new logger

Parameters:

  • other (Logger)

    a new logger



51
52
53
# File 'lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb', line 51

def logger=(other)
  config.logger = other
end

.redis_versionObject



85
86
87
# File 'lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb', line 85

def redis_version
  @redis_version ||= redis { |conn| conn.info("server")["redis_version"] }
end

.use_config(tmp_config) { ... } ⇒ Object

Change global configuration while yielding

Yields:

  • control to the caller

Raises:

  • (::ArgumentError)


57
58
59
60
61
62
63
64
# File 'lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb', line 57

def use_config(tmp_config)
  raise ::ArgumentError, "#{name}.#{__method__} needs a block" unless block_given?

  old_config = config.to_h
  configure(tmp_config)
  yield
  configure(old_config)
end

.with_context(context) ⇒ Object

:reek:ManualDispatch



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb', line 37

def with_context(context)
  if logger.respond_to?(:with_context)
    logger.with_context(context) { yield }
  elsif defined?(Sidekiq::Context)
    Sidekiq::Context.with(context) { yield }
  elsif defined?(Sidekiq::Logging)
    Sidekiq::Logging.with_context(context) { yield }
  else
    yield
  end
end