module PikaQue::Util

Public Instance Methods

constantize(str) click to toggle source
# File lib/pika_que/util.rb, line 7
def constantize(str)
  return str if (str.is_a?(Class) || str.is_a?(Module))

  names = str.split('::')
  names.shift if names.empty? || names.first.empty?

  names.inject(Object) do |constant, name|
    constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
  end
end
inflector() click to toggle source
# File lib/pika_que/util.rb, line 44
def inflector
  @inflector ||= Dry::Inflector.new
end
register_worker_class(worker_name, base_class, queue_name, queue_opts = {}, handler_class = nil, handler_opts = {}, local_config = {}) click to toggle source
# File lib/pika_que/util.rb, line 18
def register_worker_class(worker_name, base_class, queue_name, queue_opts = {}, handler_class = nil, handler_opts = {}, local_config = {})
  Object.const_set(worker_name, Class.new(base_class) do
      from_queue queue_name, queue_opts         
      handle_with handler_class, handler_opts if handler_class
      config local_config if local_config.any?
    end
  )
end
worker_classes(workers = []) click to toggle source
# File lib/pika_que/util.rb, line 27
def worker_classes(workers = [])
  return [] if workers.nil?
  
  workers.map do |worker|
    if worker.is_a? Hash
      if worker[:worker]
        worker[:worker]
      else
        queue_name = worker[:queue_name] || worker[:queue]
        "#{inflector.classify(inflector.underscore(queue_name))}Worker"
      end
    else
      worker
    end
  end
end