Module: Nezu::Runtime::Common

Included in:
Consumer, Producer
Defined in:
lib/nezu/runtime.rb

Instance Method Summary collapse

Instance Method Details

#descendantsObject



71
72
73
# File 'lib/nezu/runtime.rb', line 71

def descendants
  ObjectSpace.each_object(Class).select { |klass| klass < self }
end

#inherited(subclass) ⇒ Object

creates a class method ::queue_name with a queue name derived from the class name and pre- and posfixes. e.g if a classes name is Foo the queue_name will be “your_prefix.foo.your_postfix” to avoid naming conflicts it is also possible to scope the class in modules “Producers” or “Consumers” so a somthing like: :code module Producers

class FooBar < Nezu::Runtime::Producer
end

end

will result in a queue “your_prefix.foo_bar.your_postfix” the same goes for module “Consumers”. This is especially useful if you need a consumer and a producer on the same queue



61
62
63
64
65
66
67
68
69
# File 'lib/nezu/runtime.rb', line 61

def inherited(subclass)
  subclass.class_eval {cattr_accessor :queue_name} #:exchange_name?
  #debugger
  subclass.queue_name = ''
  subclass.queue_name << "#{Nezu::Config.amqp[Nezu.env.to_sym].queue_prefix}." unless Nezu::Config.amqp[Nezu.env.to_sym].queue_prefix.nil?
  subclass.queue_name << subclass.to_s.gsub(/^(Producers|Consumers)::/, '').gsub(/::/, '.').underscore
  subclass.queue_name << ".#{Nezu::Config.amqp[Nezu.env.to_sym].queue_postfix}" unless Nezu::Config.amqp[Nezu.env.to_sym].queue_postfix.nil?
  subclass.queue_name
end