Sha256: 64b4f5eea3fe0fc39bffd377c5d7ce3edb4e28fd7c62bf0b70e733d20ae77c65
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 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_routes! consumers.each do |c| c.clear_routes! 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
messaging-3.4.3 | lib/messaging/routes.rb |
messaging-3.4.2 | lib/messaging/routes.rb |