Module: SidekiqUniqueJobs

Defined in:
lib/sidekiq-unique-jobs.rb,
lib/sidekiq_unique_jobs/cli.rb,
lib/sidekiq_unique_jobs/lock.rb,
lib/sidekiq_unique_jobs/util.rb,
lib/sidekiq_unique_jobs/config.rb,
lib/sidekiq_unique_jobs/scripts.rb,
lib/sidekiq_unique_jobs/testing.rb,
lib/sidekiq_unique_jobs/version.rb,
lib/sidekiq_unique_jobs/constants.rb,
lib/sidekiq_unique_jobs/middleware.rb,
lib/sidekiq_unique_jobs/normalizer.rb,
lib/sidekiq_unique_jobs/unlockable.rb,
lib/sidekiq_unique_jobs/unique_args.rb,
lib/sidekiq_unique_jobs/client/middleware.rb,
lib/sidekiq_unique_jobs/server/middleware.rb,
lib/sidekiq_unique_jobs/lock/until_timeout.rb,
lib/sidekiq_unique_jobs/timeout_calculator.rb,
lib/sidekiq_unique_jobs/lock/until_executed.rb,
lib/sidekiq_unique_jobs/lock/until_executing.rb,
lib/sidekiq_unique_jobs/lock/while_executing.rb,
lib/sidekiq_unique_jobs/options_with_fallback.rb,
lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb

Defined Under Namespace

Modules: Client, Lock, Middleware, Normalizer, OptionsWithFallback, Scripts, Server, Unlockable, Util Classes: Cli, Config, Testing, TimeoutCalculator, UniqueArgs

Constant Summary collapse

ScriptError =
Class.new(StandardError)
VERSION =
'4.0.12'
RunLockFailed =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.configObject



23
24
25
26
27
28
29
30
# File 'lib/sidekiq-unique-jobs.rb', line 23

def config
  @config ||= Config.new(
    unique_prefix: 'uniquejobs',
    default_expiration: 30 * 60,
    default_lock: :while_executing,
    redis_test_mode: :redis # :mock
  )
end

.configure(options = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/sidekiq-unique-jobs.rb', line 36

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

.connection(redis_pool = nil) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/sidekiq-unique-jobs.rb', line 63

def connection(redis_pool = nil)
  if redis_pool
    redis_pool.with { |conn| yield conn }
  else
    Sidekiq.redis { |conn| yield conn }
  end
end

.default_lockObject



32
33
34
# File 'lib/sidekiq-unique-jobs.rb', line 32

def default_lock
  config.default_lock
end

.namespaceObject



46
47
48
# File 'lib/sidekiq-unique-jobs.rb', line 46

def namespace
  @namespace ||= connection { |c| c.respond_to?(:namespace) ? c.namespace : nil }
end

.redis_versionObject



59
60
61
# File 'lib/sidekiq-unique-jobs.rb', line 59

def redis_version
  @redis_version ||= connection { |c| c.info('server'.freeze)['redis_version'.freeze] }
end

.synchronize(item, redis_pool) ⇒ Object



71
72
73
# File 'lib/sidekiq-unique-jobs.rb', line 71

def synchronize(item, redis_pool)
  Lock::WhileExecuting.synchronize(item, redis_pool) { yield }
end

.worker_class_constantize(worker_class) ⇒ Object

Attempt to constantize a string worker_class argument, always failing back to the original argument.



52
53
54
55
56
57
# File 'lib/sidekiq-unique-jobs.rb', line 52

def worker_class_constantize(worker_class)
  return worker_class unless worker_class.is_a?(String)
  worker_class.constantize
rescue NameError
  worker_class
end