module Sidekiq::LockableJob

Constants

DEFAULT_LOCKABLE_JOB_SERVICE

Public Class Methods

included(base) click to toggle source
# File lib/sidekiq/lockable_job.rb, line 14
def self.included(base)
  unless base.ancestors.include? Sidekiq::Worker
    raise ArgumentError, "Sidekiq::LockableJob can only be included in a Sidekiq::Worker"
  end

  base.extend(ClassMethods)

  # Automatically add sidekiq middleware when we're first included
  #
  # This might only occur when the worker class is first loaded in a
  # development rails environment, but that happens before the middleware
  # chain is invoked so we're all good.
  #
  Sidekiq.configure_server do |config|
    unless config.server_middleware.exists? Sidekiq::LockableJob::Middleware::Server::SetLocks
      config.server_middleware.add Sidekiq::LockableJob::Middleware::Server::SetLocks
    end
    unless config.server_middleware.exists? Sidekiq::LockableJob::Middleware::Server::HandleLockedBy
      config.server_middleware.add Sidekiq::LockableJob::Middleware::Server::HandleLockedBy
    end
    unless config.server_middleware.exists? Sidekiq::LockableJob::Middleware::Server::UnsetLocks
      config.server_middleware.add Sidekiq::LockableJob::Middleware::Server::UnsetLocks
    end
  end
  Sidekiq.configure_client do |config|
    unless config.client_middleware.exists? Sidekiq::LockableJob::Middleware::Client::SetLocks
      config.client_middleware.add Sidekiq::LockableJob::Middleware::Client::SetLocks
    end
  end
end