class Q::Methods::ThreadedInMemoryQueue::QueueMethod

Public Class Methods

call(options = {}) click to toggle source
# File lib/q/methods/threaded_in_memory_queue.rb, line 49
def self.call(options = {})
  base             = options[:base]
  queue_name       = options[:queue_name]
  queue_klass_name = options[:queue_klass_name]
  queue_klass      = base.const_get(queue_klass_name)

  raise Q::DuplicateQueueMethodError.new(base, queue_name) if base.queue.respond_to?(queue_name)
  base.queue.define_singleton_method(queue_name) do |*args|
    ::ThreadedInMemoryQueue.start unless ::ThreadedInMemoryQueue.started?
    ::ThreadedInMemoryQueue.enqueue(queue_klass, *args)
  end
end