Class: Sidekiq::DeferredJobs::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/deferred_jobs.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(filters) ⇒ Filter

Returns a new instance of Filter.



223
224
225
226
227
228
229
# File 'lib/sidekiq/deferred_jobs.rb', line 223

def initialize(filters)
  @filters = (filters.is_a?(Hash) ? [filters] : Array(filters).flatten)
  invalid = @filters.reject { |filter| filter.is_a?(Module) || filter.is_a?(Hash) }
  unless invalid.empty?
    raise ArgumentError, "Filters must be classes, modules, or hashes; got #{invalid.collect(&:inspect).join(", ")}"
  end
end

Instance Method Details

#match?(klass, opts = nil) ⇒ Boolean

Returns true if the job matches the filters.

Returns:

  • (Boolean)

    true if the job matches the filters.



232
233
234
235
236
237
238
239
240
241
242
# File 'lib/sidekiq/deferred_jobs.rb', line 232

def match?(klass, opts = nil)
  return true if @filters.empty?
  @filters.any? do |filter|
    if filter.is_a?(Module)
      klass <= filter
    else
      worker_options = Sidekiq::DeferredJobs.worker_options(klass, opts)
      filter.all? { |key, value| worker_options[key.to_s] == value }
    end
  end
end