Sha256: e0700647bbfd3a9ee87a978b7d9b26b40f642f911ae08f3ffd46bed7cb2cbaa2
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
module Messaging # Public: Used by Messaging.routes to setup the routes for matching messages to callables # # See routing.rb for more information. class Routes include Routing # Creates a consumer for the default adapter # # @param name [Symbol] the name of the consumer. def consumer(name, **options, &block) consumer_definitions[name] = { options: options, block: block } end def define_consumers! return unless consumers.empty? consumer_definitions.each do |name, definition| c = Messaging.consumer_adapter.create_consumer(name, definition.fetch(:options)) definition.fetch(:block)&.call(c) consumers << c end end # Keeps the consumers, but reload their subscriptions so code reloading works. # The consumer has a reference to the class name of each of its handlers, # if the handler is reloaded the reference would point to an old instance. def reload_consumer_subscriptions! consumers.each do |c| c.clear_subscribers! consumer_definitions[c.name].fetch(:block)&.call(c) end end def consumers @consumers ||= [] end # Public: Evaluate route definition. def draw(&block) instance_eval(&block) end private def consumer_definitions @consumer_definitions ||= {} end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
messaging-3.4.1 | lib/messaging/routes.rb |