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
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
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