lib/queue_bus/dispatchers.rb in queue-bus-0.9.0 vs lib/queue_bus/dispatchers.rb in queue-bus-0.9.1
- old
+ new
@@ -1,26 +1,33 @@
+# frozen_string_literal: true
+
module QueueBus
+ # A collection of Dispatches
+ #
+ # Each Dispatch is an application with it's own set of subscriptions. This is a master object
+ # that provides some basic controls over the set of applications.
class Dispatchers
- def dispatch(app_key=nil, &block)
+ # Fetches a dispatch for the application key and binds the provided block to it.
+ def dispatch(app_key = nil, &block)
dispatcher = dispatcher_by_key(app_key)
dispatcher.instance_eval(&block)
dispatcher
end
-
+
def dispatchers
@dispatchers ||= {}
@dispatchers.values
end
-
+
def dispatcher_by_key(app_key)
app_key = Application.normalize(app_key || ::QueueBus.default_app_key)
@dispatchers ||= {}
@dispatchers[app_key] ||= Dispatch.new(app_key)
end
-
+
def dispatcher_execute(app_key, key, attributes)
@dispatchers ||= {}
dispatcher = @dispatchers[app_key]
- dispatcher.execute(key, attributes) if dispatcher
+ dispatcher&.execute(key, attributes)
end
end
end