Module: Q

Extended by:
Helpers
Defined in:
lib/q.rb,
lib/q.rb,
lib/q/tasks.rb,
lib/q/errors.rb,
lib/q/helpers.rb,
lib/q/methods.rb,
lib/q/version.rb,
lib/q/methods/base.rb

Defined Under Namespace

Modules: Helpers, Methods, QueueTask Classes: DuplicateQueueClassError, DuplicateQueueMethodError, InstanceQueueDefinitionError, MissingClassError, Queue, StandardError

Constant Summary collapse

DEFAULT_QUEUE =
->{ @env = :threaded; Q::Methods::Threaded }
FALSEY_HASH =
Hash.new(false)
Method =
Q::Methods
VERSION =
"0.0.1"

Class Method Summary collapse

Methods included from Helpers

camelize, const_defined_on?, proc_to_lambda, underscore

Class Method Details

.envObject



28
29
30
31
32
33
# File 'lib/q.rb', line 28

def self.env
  name = queue.to_s.split("::").last
  @env ||= Q.underscore(name)

  OpenStruct.new(FALSEY_HASH.merge("#{@env}?" => true))
end

.module_from_klass_name(name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/q.rb', line 40

def self.module_from_klass_name(name)
  unless defined?(Q::Methods.const_get(name))
    require "q/methods/#{name}"
  end
  return Q::Methods.const_get(name)
rescue LoadError => e
  raise LoadError, "Could not find queue: #{name}, expected to be defined in q/methods/#{name}\n" + e.message
rescue NameError => e
  raise NameError, "Could not load queue: #{name}, expected to be defined in q/methods/#{name}\n" + e.message
end

.module_from_queue_name(queue_name) ⇒ Object



51
52
53
# File 'lib/q.rb', line 51

def self.module_from_queue_name(queue_name)
  module_from_klass_name(camelize(queue_name))
end

.queueObject



20
21
22
# File 'lib/q.rb', line 20

def self.queue
  @queue_method || DEFAULT_QUEUE.call
end

.queue=(queue) ⇒ Object



66
67
68
69
70
71
72
73
# File 'lib/q.rb', line 66

def self.queue=(queue)
  if queue.is_a?(Module)
    @queue_method = queue
  else
    @env = queue
    @queue_method = queue_lookup[queue].call
  end
end

.queue_config {|@config_class| ... } ⇒ Object

Yields:

  • (@config_class)


75
76
77
78
79
# File 'lib/q.rb', line 75

def self.queue_config(&block)
  @config_class ||= queue::QueueConfig.call
  yield @config_class if block_given?
  @config_class
end

.queue_lookupObject



55
56
57
58
59
60
61
62
63
64
# File 'lib/q.rb', line 55

def self.queue_lookup
  @queue_lookup ||= Hash.new do |hash, key|
    hash[key] = -> {
      require "q/methods/#{key}"
      const = Q.camelize(key)
      ::Q::Methods.const_get(const)
    }
  end
  @queue_lookup
end

.reset_queue!Object



35
36
37
38
# File 'lib/q.rb', line 35

def self.reset_queue!
  @queue_method = nil
  @env          = nil
end

.setup {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Q)

    the object that the method was called on



24
25
26
# File 'lib/q.rb', line 24

def self.setup(&block)
  yield self
end