Class: BoltRb::Middleware::Chain
- Inherits:
-
Object
- Object
- BoltRb::Middleware::Chain
- Defined in:
- lib/bolt_rb/middleware/chain.rb
Overview
Executes a chain of middleware in order
The middleware chain follows the onion model where each middleware can execute code before and after the next middleware in the chain. This is similar to Rack middleware or Rails around_action filters.
Instance Method Summary collapse
-
#call(context) { ... } ⇒ void
Executes the middleware chain.
-
#initialize(middleware_classes) ⇒ Chain
constructor
Creates a new middleware chain.
Constructor Details
#initialize(middleware_classes) ⇒ Chain
Creates a new middleware chain
20 21 22 |
# File 'lib/bolt_rb/middleware/chain.rb', line 20 def initialize(middleware_classes) @middleware_classes = middleware_classes end |
Instance Method Details
#call(context) { ... } ⇒ void
This method returns an undefined value.
Executes the middleware chain
Each middleware is instantiated and called in order. The provided block is called after all middleware have yielded. Middleware can stop the chain by not yielding.
33 34 35 36 |
# File 'lib/bolt_rb/middleware/chain.rb', line 33 def call(context, &block) chain = @middleware_classes.map(&:new) run_chain(chain, context, &block) end |