class AdvancedSneakersActiveJob::WorkersRegistry

Sneakers uses Sneakers::Worker::Classes array to track all workers. WorkersRegistry mocks original array to track ActiveJob workers separately.

Attributes

sneakers_workers[R]

Public Class Methods

new() click to toggle source
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 13
def initialize
  @sneakers_workers = []
  @activejob_workers = []
end

Public Instance Methods

<<(worker) click to toggle source
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 18
def <<(worker)
  if worker <= ActiveJob::QueueAdapters::AdvancedSneakersAdapter::JobWrapper
    @activejob_workers << worker
  else
    sneakers_workers << worker
  end
end
activejob_workers() click to toggle source
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 51
def activejob_workers
  define_active_job_consumers

  @activejob_workers
end
call() click to toggle source

Sneakers workergroup supports callable objects. github.com/jondot/sneakers/pull/210/files github.com/jondot/sneakers/blob/7a972d22a58de8a261a738d9a1e5fb51f9608ede/lib/sneakers/workergroup.rb#L28

# File lib/advanced_sneakers_activejob/workers_registry.rb, line 29
def call
  case activejob_workers_strategy
  when :only    then activejob_workers
  when :exclude then sneakers_workers
  when :include then sneakers_workers + activejob_workers
  else
    raise "Unknown activejob_workers_strategy '#{activejob_workers_strategy}'"
  end
end
define_active_job_consumers() click to toggle source
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 69
def define_active_job_consumers
  active_job_classes_with_matching_adapter.each do |worker|
    AdvancedSneakersActiveJob.define_consumer(queue_name: worker.new.queue_name)
  end
end
inspect()

For cleaner output on inspecting Sneakers::Worker::Classes in console.

Alias for: to_hash
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 57
def method_missing(method_name, *args, &block)
  if call.respond_to?(method_name)
    call.send(method_name, *args, &block)
  else
    super
  end
end
respond_to_missing?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 65
def respond_to_missing?(method_name, include_private = false)
  call.respond_to?(method_name) || super
end
to_h()
Alias for: to_hash
to_hash() click to toggle source
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 39
def to_hash
  {
    sneakers_workers: sneakers_workers,
    activejob_workers: activejob_workers
  }
end
Also aliased as: to_h, inspect

Private Instance Methods

active_job_classes_with_matching_adapter() click to toggle source
# File lib/advanced_sneakers_activejob/workers_registry.rb, line 77
def active_job_classes_with_matching_adapter
  ([ActiveJob::Base] + ActiveJob::Base.descendants).select do |klass|
    klass.queue_adapter == ::ActiveJob::QueueAdapters::AdvancedSneakersAdapter ||
      klass.queue_adapter.is_a?(::ActiveJob::QueueAdapters::AdvancedSneakersAdapter)
  end
end