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.9'
RunLockFailed =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.configObject



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

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



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

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



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

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

.default_lockObject



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

def default_lock
  config.default_lock
end

.mock_redisObject



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

def mock_redis
  @redis_mock ||= MockRedis.new if defined?(MockRedis)
end

.namespaceObject



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

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

.redis_versionObject



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

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

.synchronize(item, redis_pool) ⇒ Object



74
75
76
# File 'lib/sidekiq-unique-jobs.rb', line 74

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.



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

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