class SimpleMutex::SidekiqSupport::JobWrapper

Constants

DEFAULT_EXPIRES_IN

Attributes

expires_in[RW]
job[RW]
lock_key[RW]
lock_with_params[RW]
params[RW]

Public Class Methods

new(job, params: [], lock_key: nil, lock_with_params: false, expires_in: DEFAULT_EXPIRES_IN) click to toggle source
# File lib/simple_mutex/sidekiq_support/job_wrapper.rb, line 10
def initialize(job,
               params:           [],
               lock_key:         nil,
               lock_with_params: false,
               expires_in:       DEFAULT_EXPIRES_IN)
  self.job              = job
  self.params           = params

  self.lock_key         = lock_key
  self.lock_with_params = lock_with_params
  self.expires_in       = expires_in
end

Public Instance Methods

with_redlock(&block) click to toggle source
# File lib/simple_mutex/sidekiq_support/job_wrapper.rb, line 23
def with_redlock(&block)
  ::SimpleMutex::Mutex.with_lock(
    lock_key || generate_lock_key,
    expires_in: expires_in,
    payload:    generate_payload,
    &block
  )
end

Private Instance Methods

generate_lock_key() click to toggle source
# File lib/simple_mutex/sidekiq_support/job_wrapper.rb, line 36
def generate_lock_key
  key = if lock_with_params
          "#{job.class.name}<#{params.to_json}>"
        else
          job.class.name
        end
  key.tr(":", "_")
end
generate_payload() click to toggle source
# File lib/simple_mutex/sidekiq_support/job_wrapper.rb, line 45
def generate_payload
  { "type"       => "Job",
    "started_at" => Time.now.to_s,
    "jid"        => job.jid }
end