bug_bunny 3.0.4 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/bug_bunny/middleware/base.rb +46 -0
- data/lib/bug_bunny/middleware/json_response.rb +3 -3
- data/lib/bug_bunny/middleware/raise_error.rb +3 -3
- data/lib/bug_bunny/version.rb +1 -1
- data/lib/bug_bunny.rb +1 -2
- metadata +3 -3
- data/lib/bug_bunny/middleware.rb +0 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 65b3c20095ebcd609f8b077d5b9775491e88d5a79162c9a55538a21380b5cfe7
|
|
4
|
+
data.tar.gz: 387dc4fe344456068bc00a600d3ec861fdbf28785b6ea6138ad0461a57cc9041
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64e39a7c76216cd27abd2308d1e926922aff6e5f57d15b188308ab583297b706aa6c85cd3e3302ab174f79fc653a07c08ff61b9da87f7661337db1d4f2842db9
|
|
7
|
+
data.tar.gz: b2e836747a841b870b27d13cb096484d2c812fb74f6a3ac44316a923686bcff6589ec9bca90086254394bbf365ed6ba6cc3a9b4520f48bd216cfea0928573f57
|
data/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
|
+
## [3.0.5] - 2026-02-17
|
|
3
|
+
|
|
4
|
+
### 🐛 Bug Fixes
|
|
5
|
+
* **Load Error Resolution:** Fixed `TypeError: Middleware is not a module` by converting `BugBunny::Middleware` into a proper module and introducing `BugBunny::Middleware::Base`.
|
|
6
|
+
|
|
7
|
+
### 🛠 Improvements
|
|
8
|
+
* **Standardized Middleware Architecture:** Consolidated the Template Method pattern across all internal interceptors (`RaiseError`, `JsonResponse`).
|
|
9
|
+
|
|
2
10
|
## [3.0.4] - 2026-02-16
|
|
3
11
|
|
|
4
12
|
### ♻️ Refactoring & Architecture
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# lib/bug_bunny/middleware.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module BugBunny
|
|
5
|
+
module Middleware
|
|
6
|
+
# Clase base para todos los middlewares de BugBunny.
|
|
7
|
+
#
|
|
8
|
+
# Implementa el patrón "Template Method" para estandarizar el flujo de ejecución
|
|
9
|
+
# de la cadena de responsabilidades (Ida y Vuelta).
|
|
10
|
+
#
|
|
11
|
+
# Las subclases deben implementar:
|
|
12
|
+
# * {#on_request} para modificar la petición antes de enviarla.
|
|
13
|
+
# * {#on_complete} para modificar la respuesta después de recibirla.
|
|
14
|
+
#
|
|
15
|
+
# @abstract Subclase y anula {#on_request} o {#on_complete} para inyectar lógica.
|
|
16
|
+
class Base
|
|
17
|
+
# @return [Object] El siguiente middleware en la pila o el adaptador final.
|
|
18
|
+
attr_reader :app
|
|
19
|
+
|
|
20
|
+
# Inicializa el middleware.
|
|
21
|
+
#
|
|
22
|
+
# @param app [Object] El siguiente eslabón de la cadena.
|
|
23
|
+
def initialize(app)
|
|
24
|
+
@app = app
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Ejecuta el middleware orquestando los hooks de ciclo de vida.
|
|
28
|
+
#
|
|
29
|
+
# 1. Llama a {#on_request} (Ida).
|
|
30
|
+
# 2. Llama al siguiente eslabón (`@app.call`).
|
|
31
|
+
# 3. Llama a {#on_complete} (Vuelta).
|
|
32
|
+
#
|
|
33
|
+
# @param env [BugBunny::Request] El objeto request (entorno).
|
|
34
|
+
# @return [Hash] La respuesta final procesada.
|
|
35
|
+
def call(env)
|
|
36
|
+
on_request(env) if respond_to?(:on_request)
|
|
37
|
+
|
|
38
|
+
response = @app.call(env)
|
|
39
|
+
|
|
40
|
+
on_complete(response) if respond_to?(:on_complete)
|
|
41
|
+
|
|
42
|
+
response
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require 'json'
|
|
5
|
-
require_relative '../middleware'
|
|
5
|
+
require_relative '../middleware/base'
|
|
6
6
|
|
|
7
7
|
module BugBunny
|
|
8
8
|
module Middleware
|
|
@@ -11,8 +11,8 @@ module BugBunny
|
|
|
11
11
|
# Convierte strings JSON en Hashes de Ruby. Si está disponible ActiveSupport,
|
|
12
12
|
# aplica HashWithIndifferentAccess.
|
|
13
13
|
#
|
|
14
|
-
# @see BugBunny::Middleware
|
|
15
|
-
class JsonResponse < BugBunny::Middleware
|
|
14
|
+
# @see BugBunny::Middleware::Base
|
|
15
|
+
class JsonResponse < BugBunny::Middleware::Base
|
|
16
16
|
# Hook de ciclo de vida: Ejecutado después de recibir la respuesta.
|
|
17
17
|
#
|
|
18
18
|
# Intercepta el body y lo reemplaza por su versión parseada.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# lib/bug_bunny/middleware/raise_error.rb
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
require_relative '../middleware'
|
|
4
|
+
require_relative '../middleware/base'
|
|
5
5
|
|
|
6
6
|
module BugBunny
|
|
7
7
|
module Middleware
|
|
8
8
|
# Middleware que inspecciona el status de la respuesta y lanza excepciones
|
|
9
9
|
# si se encuentran errores (4xx o 5xx).
|
|
10
10
|
#
|
|
11
|
-
# @see BugBunny::Middleware
|
|
12
|
-
class RaiseError < BugBunny::Middleware
|
|
11
|
+
# @see BugBunny::Middleware::Base
|
|
12
|
+
class RaiseError < BugBunny::Middleware::Base
|
|
13
13
|
# Hook de ciclo de vida: Ejecutado después de recibir la respuesta.
|
|
14
14
|
#
|
|
15
15
|
# Verifica el código de estado y lanza la excepción correspondiente.
|
data/lib/bug_bunny/version.rb
CHANGED
data/lib/bug_bunny.rb
CHANGED
|
@@ -13,8 +13,7 @@ require_relative 'bug_bunny/resource'
|
|
|
13
13
|
require_relative 'bug_bunny/rabbit'
|
|
14
14
|
require_relative 'bug_bunny/consumer'
|
|
15
15
|
require_relative 'bug_bunny/controller'
|
|
16
|
-
require_relative 'bug_bunny/middleware'
|
|
17
|
-
|
|
16
|
+
require_relative 'bug_bunny/middleware/base'
|
|
18
17
|
require_relative 'bug_bunny/middleware/stack'
|
|
19
18
|
require_relative 'bug_bunny/middleware/raise_error'
|
|
20
19
|
require_relative 'bug_bunny/middleware/json_response'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bug_bunny
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- gabix
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-02-
|
|
11
|
+
date: 2026-02-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bunny
|
|
@@ -200,7 +200,7 @@ files:
|
|
|
200
200
|
- lib/bug_bunny/consumer.rb
|
|
201
201
|
- lib/bug_bunny/controller.rb
|
|
202
202
|
- lib/bug_bunny/exception.rb
|
|
203
|
-
- lib/bug_bunny/middleware.rb
|
|
203
|
+
- lib/bug_bunny/middleware/base.rb
|
|
204
204
|
- lib/bug_bunny/middleware/json_response.rb
|
|
205
205
|
- lib/bug_bunny/middleware/raise_error.rb
|
|
206
206
|
- lib/bug_bunny/middleware/stack.rb
|
data/lib/bug_bunny/middleware.rb
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# lib/bug_bunny/middleware.rb
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
module BugBunny
|
|
5
|
-
# Clase base para todos los middlewares de BugBunny.
|
|
6
|
-
#
|
|
7
|
-
# Implementa el patrón "Template Method" para estandarizar el flujo de ejecución
|
|
8
|
-
# de la cadena de responsabilidades (Ida y Vuelta).
|
|
9
|
-
#
|
|
10
|
-
# Las subclases deben implementar:
|
|
11
|
-
# * {#on_request} para modificar la petición antes de enviarla.
|
|
12
|
-
# * {#on_complete} para modificar la respuesta después de recibirla.
|
|
13
|
-
#
|
|
14
|
-
# @abstract Subclase y anula {#on_request} o {#on_complete} para inyectar lógica.
|
|
15
|
-
class Middleware
|
|
16
|
-
# @return [Object] El siguiente middleware en la pila o el adaptador final.
|
|
17
|
-
attr_reader :app
|
|
18
|
-
|
|
19
|
-
# Inicializa el middleware.
|
|
20
|
-
#
|
|
21
|
-
# @param app [Object] El siguiente eslabón de la cadena.
|
|
22
|
-
def initialize(app)
|
|
23
|
-
@app = app
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Ejecuta el middleware orquestando los hooks de ciclo de vida.
|
|
27
|
-
#
|
|
28
|
-
# 1. Llama a {#on_request} (Ida).
|
|
29
|
-
# 2. Llama al siguiente eslabón (`@app.call`).
|
|
30
|
-
# 3. Llama a {#on_complete} (Vuelta).
|
|
31
|
-
#
|
|
32
|
-
# @param env [BugBunny::Request] El objeto request (entorno).
|
|
33
|
-
# @return [Hash] La respuesta final procesada.
|
|
34
|
-
def call(env)
|
|
35
|
-
on_request(env) if respond_to?(:on_request)
|
|
36
|
-
|
|
37
|
-
response = @app.call(env)
|
|
38
|
-
|
|
39
|
-
on_complete(response) if respond_to?(:on_complete)
|
|
40
|
-
|
|
41
|
-
response
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|