module SidekiqAdhocJob::Strategy

Attributes

module_names[R]
worker_klasses[R]

Public Class Methods

included(base) click to toggle source
# File lib/sidekiq_adhoc_job/strategy.rb, line 3
def self.included(base)
  SidekiqAdhocJob.strategies << base

  base.extend ClassMethods
  base.class_eval do
  end
end
new(module_names) click to toggle source
# File lib/sidekiq_adhoc_job/strategy.rb, line 15
def initialize(module_names)
  @module_names = module_names
  @worker_klasses = {}
end

Public Instance Methods

allowed_namespace?(class_name, allowlist:) click to toggle source
# File lib/sidekiq_adhoc_job/strategy.rb, line 30
def allowed_namespace?(class_name, allowlist:)
  return true if allowlist.empty? || allowlist.include?('Module') # allow any namespace

  allowlist.any? { |prefix| class_name.start_with?(prefix) }
end
load() click to toggle source
# File lib/sidekiq_adhoc_job/strategy.rb, line 20
def load
  ObjectSpace.each_object(Class).each do |klass|
    next unless klass

    if worker_class?(klass) && allowed_namespace?(klass.name, allowlist: module_names)
      @worker_klasses[worker_path_name(klass.name)] = klass
    end
  end
end
worker_path_name(worker_name) click to toggle source
# File lib/sidekiq_adhoc_job/strategy.rb, line 36
def worker_path_name(worker_name)
  Utils::String.underscore(worker_name).gsub('/', '_')
end