Class: CMDx::MiddlewareRegistry
- Inherits:
-
Object
- Object
- CMDx::MiddlewareRegistry
- Defined in:
- lib/cmdx/middleware_registry.rb
Overview
Registry for managing middleware components in a task execution chain.
The MiddlewareRegistry maintains an ordered list of middleware components that can be inserted, removed, and executed in sequence. Each middleware can be configured with specific options and is executed in the order they were registered.
Supports copy-on-write semantics: a duped registry shares the parent’s data until a write operation triggers materialization.
Instance Method Summary collapse
-
#call!(task) {|task| ... } ⇒ Object
Execute the middleware chain for a given task.
-
#deregister(middleware) ⇒ MiddlewareRegistry
Remove a middleware component from the registry.
-
#initialize(registry = nil) ⇒ MiddlewareRegistry
constructor
Initialize a new middleware registry.
-
#initialize_dup(source) ⇒ Object
Sets up copy-on-write state when duplicated via dup.
-
#register(middleware, at: -1,, **options) ⇒ MiddlewareRegistry
Register a middleware component in the registry.
-
#registry ⇒ Array<Array>
(also: #to_a)
Returns the ordered collection of middleware entries.
Constructor Details
#initialize(registry = nil) ⇒ MiddlewareRegistry
Initialize a new middleware registry.
24 25 26 |
# File 'lib/cmdx/middleware_registry.rb', line 24 def initialize(registry = nil) @registry = registry || [] end |
Instance Method Details
#call!(task) {|task| ... } ⇒ Object
Execute the middleware chain for a given task.
109 110 111 112 113 |
# File 'lib/cmdx/middleware_registry.rb', line 109 def call!(task, &) raise ArgumentError, "block required" unless block_given? recursively_call_middleware(0, task, &) end |
#deregister(middleware) ⇒ MiddlewareRegistry
Remove a middleware component from the registry.
85 86 87 88 89 90 |
# File 'lib/cmdx/middleware_registry.rb', line 85 def deregister(middleware) materialize! @registry.reject! { |mw, _opts| mw == middleware } self end |
#initialize_dup(source) ⇒ Object
Sets up copy-on-write state when duplicated via dup.
33 34 35 36 37 |
# File 'lib/cmdx/middleware_registry.rb', line 33 def initialize_dup(source) @parent = source @registry = nil super end |
#register(middleware, at: -1,, **options) ⇒ MiddlewareRegistry
Register a middleware component in the registry.
68 69 70 71 72 73 |
# File 'lib/cmdx/middleware_registry.rb', line 68 def register(middleware, at: -1, **) materialize! @registry.insert(at, [middleware, ]) self end |
#registry ⇒ Array<Array> Also known as: to_a
Returns the ordered collection of middleware entries. Delegates to the parent registry when not yet materialized.
48 49 50 |
# File 'lib/cmdx/middleware_registry.rb', line 48 def registry @registry || @parent.registry end |