Module: Q::Methods::Base

Included in:
Q::Methods, DelayedJob, Resque, Sidekiq, ThreadedInMemoryQueue
Defined in:
lib/q/methods/base.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/q/methods/base.rb', line 4

def self.included(base)
  base.const_set("Queue", Class.new(::Q::Queue)) unless base.const_get("Queue") != ::Queue

  included = base.method(:included) if base.respond_to?(:included)
  base.define_singleton_method(:included) do |target|
    included.call(target) unless included.nil?

    raise Q::MissingClassError.new(base, :QueueMethod) unless Q.const_defined_on?(base, :QueueMethod)
    raise Q::MissingClassError.new(base, :QueueBuild)  unless Q.const_defined_on?(base, :QueueBuild)
    raise Q::MissingClassError.new(base, :QueueTask)   unless Q.const_defined_on?(base, :QueueTask)
    raise Q::MissingClassError.new(base, :QueueConfig) unless Q.const_defined_on?(base, :QueueConfig)

    target.extend(ClassMethods)
    target.send(:include, InstanceMethods)

    target.class_variable_set(:@@_q_klass, base)            unless target.class_variable_defined?(:@@_q_klass)
    target.class_variable_set(:@@_q_queue, base::Queue.new) unless target.class_variable_defined?(:@@_q_queue)
  end
end