Module: SidekiqUniqueJobs::SidekiqWorkerMethods

Included in:
LockArgs, LockDigest, LockTTL, LockTimeout, OnConflict::Reschedule
Defined in:
lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb

Overview

Module with convenience methods for the Sidekiq::Worker class

Author:

Instance Method Summary collapse

Instance Method Details

#after_unlock_hookProc

The hook to call after a successful unlock

Returns:

  • (Proc)


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

def after_unlock_hook
  lambda do
    if @worker_class.respond_to?(:after_unlock)
      @worker_class.after_unlock # instance method in sidekiq v6
    elsif worker_class.respond_to?(:after_unlock)
      worker_class.after_unlock # class method regardless of sidekiq version
    end
  end
end

#default_worker_optionsHash<Symbol, Object>

Returns the default worker options from Sidekiq

Returns:

  • (Hash<Symbol, Object>)


71
72
73
# File 'lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb', line 71

def default_worker_options
  Sidekiq.default_worker_options
end

#sidekiq_worker_class?true, false

Tests that the

Returns:

  • (true)

    if worker_class responds to get_sidekiq_options

  • (false)

    if worker_class does not respond to get_sidekiq_options



25
26
27
# File 'lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb', line 25

def sidekiq_worker_class?
  worker_method_defined?(:get_sidekiq_options)
end

#worker_classSidekiq::Worker

The Sidekiq::Worker implementation

Returns:



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

def worker_class
  @_worker_class ||= worker_class_constantize # rubocop:disable Naming/MemoizedInstanceVariableName
end

#worker_class_constantize(klazz = @worker_class) ⇒ Sidekiq::Worker

Attempt to constantize a string worker_class argument, always failing back to the original argument when the constant can’t be found

Returns:



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb', line 51

def worker_class_constantize(klazz = @worker_class)
  return klazz.class if klazz.is_a?(Sidekiq::Worker) # sidekiq v6.x
  return klazz unless klazz.is_a?(String)

  Object.const_get(klazz)
rescue NameError => ex
  case ex.message
  when /uninitialized constant/
    klazz
  else
    raise
  end
end

#worker_method_defined?(method_sym) ⇒ true, false

Avoids duplicating worker_class.respond_to? in multiple places

Returns:

  • (true, false)


10
11
12
# File 'lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb', line 10

def worker_method_defined?(method_sym)
  worker_class.respond_to?(method_sym)
end

#worker_optionsHash

Wraps #get_sidekiq_options to always work with a hash

Returns:

  • (Hash)

    of the worker class sidekiq options



16
17
18
19
20
# File 'lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb', line 16

def worker_options
  return {} unless sidekiq_worker_class?

  worker_class.get_sidekiq_options.deep_stringify_keys
end