module Q::Methods::Base::ClassMethods

Public Instance Methods

queue(*args, &block) click to toggle source
# File lib/q/methods/base.rb, line 32
def queue(*args, &block)
  queue = self.class_variable_get(:@@_q_queue)

  return queue unless block_given?

  queue_name   = args.shift
  job          = Q.proc_to_lambda(&block)

  raise "first argument #{queue_name.inspect} must be a symbol to define a queue" unless queue_name.is_a?(Symbol)

  options = { base:             self,
              queue_name:       queue_name,
              queue_klass_name: Q.camelize(queue_name) }

  queue_klass = self.class_variable_get(:@@_q_klass)
  queue_klass::QueueBuild.call(options, &job)
  queue_klass::QueueMethod.call(options)
end