Module: Nezu::Runtime::Common
Instance Method Summary collapse
- #descendants ⇒ Object
-
#inherited(subclass) ⇒ Object
creates a class method ::queue_name with a queue name derived from the class name and pre- and posfixes.
Instance Method Details
#descendants ⇒ Object
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 |