module Q::Methods::Base

Public Class Methods

included(base) click to toggle source
# 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