Class: BugBunny::Middleware::Stack
- Inherits:
-
Object
- Object
- BugBunny::Middleware::Stack
- Defined in:
- lib/bug_bunny/middleware/stack.rb
Overview
Gestiona una pila (stack) de middlewares para procesar peticiones y respuestas.
Implementa el patrón “Builder” para construir una cadena de responsabilidades. Permite registrar clases de middleware que envolverán la ejecución final (el Producer). Es similar en funcionamiento a ‘Rack::Builder` o `Faraday::RackBuilder`.
Instance Method Summary collapse
-
#build(final_app) ⇒ Object
Construye la cadena de ejecución (app) componiendo todos los middlewares registrados.
-
#initialize ⇒ Stack
constructor
Inicializa una nueva pila de middlewares vacía.
-
#use(klass, *args) {|block| ... } ⇒ Array
Registra un middleware en la pila.
Constructor Details
#initialize ⇒ Stack
Inicializa una nueva pila de middlewares vacía.
21 22 23 |
# File 'lib/bug_bunny/middleware/stack.rb', line 21 def initialize @middlewares = [] end |
Instance Method Details
#build(final_app) ⇒ Object
Construye la cadena de ejecución (app) componiendo todos los middlewares registrados.
Itera sobre los middlewares en orden inverso, envolviendo la ‘final_app` capa por capa. Esto asegura que el primer middleware agregado con #use sea el más externo y, por tanto, el primero en recibir la llamada `call`.
43 44 45 46 47 |
# File 'lib/bug_bunny/middleware/stack.rb', line 43 def build(final_app) @middlewares.reverse.inject(final_app) do |app, config| config[:klass].new(app, *config[:args], &config[:block]) end end |
#use(klass, *args) {|block| ... } ⇒ Array
Registra un middleware en la pila.
31 32 33 |
# File 'lib/bug_bunny/middleware/stack.rb', line 31 def use(klass, *args, &block) @middlewares << { klass: klass, args: args, block: block } end |