class Sidekiq::DeferredJobs::Filter

Logic for filtering jobs by worker class and/or sidekiq_options.

Public Class Methods

new(filters) click to toggle source
# File lib/sidekiq/deferred_jobs.rb, line 140
def initialize(filters)
  @filters = Array(filters).flatten
end

Public Instance Methods

match?(klass, opts = nil) click to toggle source

@return [Boolean] true if the job matches the filters.

# File lib/sidekiq/deferred_jobs.rb, line 145
def match?(klass, opts = nil)
  return true if @filters.empty?
  @filters.any? do |filter|
    if filter.is_a?(Module)
      klass <= filter
    elsif filter.is_a?(Hash)
      worker_options = (opts ? klass.sidekiq_options.merge(opts.transform_keys(&:to_s)) : klass.sidekiq_options)
      filter.all? { |key, value| worker_options[key.to_s] == value }
    else
      filter
    end
  end
end