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 |