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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4752202964e5f4382a685a356a31264db3ae51049c42a49d3e5a6602fda10ed1
4
- data.tar.gz: 1cb2f414e1fb52560d9a4310fd0679c1a59f86dc072fce6dd385b17006ecc6a0
3
+ metadata.gz: 65b3c20095ebcd609f8b077d5b9775491e88d5a79162c9a55538a21380b5cfe7
4
+ data.tar.gz: 387dc4fe344456068bc00a600d3ec861fdbf28785b6ea6138ad0461a57cc9041
5
5
  SHA512:
6
- metadata.gz: 74af2e635f79d182cfe0fc336a67bf5175ad02729e39b5ddb77fb6bfdde4e3e733f863c78e453160ca6e03ff381dc81f1169a1c9d7be39a116d971638f61d846
7
- data.tar.gz: c7da63dcce1cc2f0b77faa253327ddb4eec88866328429e84383172e07be402ff9d9c2ca6a2fbe16e9c0f7762bd8119c17496caa37a4ad35d0be07867e8aa78c
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.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BugBunny
4
- VERSION = "3.0.4"
4
+ VERSION = "3.0.5"
5
5
  end
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
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-16 00:00:00.000000000 Z
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
@@ -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