Module: Q::Methods::Base::ClassMethods

Defined in:
lib/q/methods/base.rb

Instance Method Summary collapse

Instance Method Details

#queue(*args, &block) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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