bug_bunny 4.5.0 → 4.5.2

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: 027ba35b634991e2d41e8e80250b7c03e1dd3c60265eed0787f9d2e513911276
4
- data.tar.gz: deb6f54612ca89aa583482a8e7fba8d3df60db3b4bebeb7454b47d561e4b5d0e
3
+ metadata.gz: a0f764a7f2038bc0f25ae3b15ed137eb54d7061674fa5903833f77b226a2484b
4
+ data.tar.gz: 3f8d05f541e050441f6b9a15d6dce28fd4aa545258001bccbfe31ae8106729c9
5
5
  SHA512:
6
- metadata.gz: d30777e78f9e82f984537d775a65a9b0dfada3b408d716fdb61e11d9464c24cfed58710fffaca2e355429955a9db733d79a8a7c470ce39171a5dafe5be1c7762
7
- data.tar.gz: e35937729acad3ee114e63cefd998c609171e3244b1cd5469dacf9626a732871ee4c687be8beb8f8016b4a5245e6d8a80ef52c44007dd9404b645ea0954a6063
6
+ metadata.gz: d0647375c55483c1baade8baaf9d9825d0bb02d164ad2fa0b1967bbf42eeef0355c29795c0a7befa2ed154eee7113e299845f2f798770b03a87ad0b2cd73b92c
7
+ data.tar.gz: 52e78f60fcf5aa0ed55e22c210b223ba27b5681939033ee903c604432ba4a4ffd66a0f4d48aa309c9cd03a6d6afbb7c945a3e0f255065bb61b64949e2e497750
data/CHANGELOG.md CHANGED
@@ -1,24 +1,24 @@
1
1
  # Changelog
2
2
 
3
- ## [4.5.0] - 2026-03-25
4
-
5
- ### ✨ New Features & DX
6
- * **Controller Header API:** Se introdujo el método `headers` en `BugBunny::Controller` para permitir una manipulación intuitiva de las cabeceras de respuesta AMQP, siguiendo el patrón familiar de Rails.
7
- * Ejemplo: `headers['X-Custom'] = 'Value'`.
8
- * **Observability Refinement:** Finalización de la migración al patrón de observabilidad estándar con nombres de eventos `clase.evento` en todos los componentes.
3
+ ## [4.5.2] - 2026-03-30
9
4
 
10
- ## [4.4.2] - 2026-03-25
5
+ ### 🐛 Bug Fixes
6
+ * **Controller:** Se eliminó el método `headers` introducido en v4.5.0 que pisaba el `attribute :headers` de ActiveModel. Esto causaba que `headers[:action]` fuera `nil` al procesar cualquier mensaje, resultando en `NoMethodError: undefined method 'to_sym' for nil`. Los response headers siguen siendo accesibles via `response_headers`.
11
7
 
8
+ ## [4.5.1] - 2026-03-30
12
9
 
13
10
  ### ✨ New Features
14
11
  * **Request#params:** Se agregó el atributo `params` al objeto `Request` para enviar query params de forma declarativa, al estilo Faraday. Los params se serializan como query string (`Rack::Utils.build_nested_query`) y viajan en el header AMQP `type`, que es el que usa el consumer para rutear al controlador. La `routing_key` del exchange no se ve afectada.
12
+ * Ejemplo: `client.request('users', method: :get, params: { q: { active: true } })`
15
13
  * **Resource.where con params:** `Resource.where` ahora usa internamente `req.params` en lugar de construir la URL manualmente, unificando el comportamiento con el cliente directo.
14
+ * Ejemplo: `RemoteNode.where(q: { status: 'active' })`
15
+ * **Observability — Hash serialization:** `safe_log` ahora serializa valores `Hash` como JSON compacto en el log, en lugar de la representación de Ruby, facilitando el parseo en motores de logs.
16
16
 
17
17
  ### 🐛 Bug Fixes
18
18
  * **Session#exchange:** El `name` y `type` del exchange se convierten a `String` via `.to_s` antes de pasarlos a Bunny, evitando `NoMethodError: undefined method 'gsub' for an instance of Symbol` al configurar exchanges con Symbols.
19
19
  * **Configuration:** Se corrigió el namespace por defecto de controladores de `'Rabbit::Controllers'` a `'BugBunny::Controllers'`.
20
20
 
21
- ## [4.4.2] - 2026-03-25
21
+ ## [4.5.0] - 2026-03-25
22
22
 
23
23
  ### 📈 Observability & Standards Final Polish
24
24
  * **Event Naming Standardization:** Se unificaron todos los nombres de eventos internos al formato estricto `clase.evento` (ej: `consumer.message_received`, `producer.rpc_waiting`) para una categorización impecable en motores de logs.
@@ -33,7 +33,6 @@ module BugBunny
33
33
  attribute :raw_string
34
34
 
35
35
  # @return [Hash] Headers de respuesta que serán enviados de vuelta en RPC.
36
- # @deprecated Use {#response_headers} instead or the helper {#headers}.
37
36
  attr_reader :response_headers
38
37
 
39
38
  # @return [Hash, nil] Respuesta final renderizada.
@@ -41,18 +40,6 @@ module BugBunny
41
40
 
42
41
  # @!endgroup
43
42
 
44
- # API de Cabeceras de Respuesta (Estilo Rails)
45
- # Permite manipular fácilmente los headers AMQP que se enviarán de vuelta al cliente.
46
- #
47
- # @example
48
- # headers['X-Custom-Header'] = 'Value'
49
- # headers[:content_type] = 'application/pdf'
50
- #
51
- # @return [Hash] El Hash de cabeceras de respuesta.
52
- def headers
53
- @response_headers
54
- end
55
-
56
43
 
57
44
  # ==========================================
58
45
  # INFRAESTRUCTURA DE FILTROS Y LOGS (HEREDABLES)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'json'
4
+
3
5
  module BugBunny
4
6
  # @api private
5
7
  module Observability
@@ -21,6 +23,7 @@ module BugBunny
21
23
 
22
24
  formatted = case val
23
25
  when Numeric then val
26
+ when Hash then val.to_json # Genera JSON compacto analizable
24
27
  when String then val.include?(" ") ? val.inspect : val
25
28
  else val.to_s.include?(" ") ? val.to_s.inspect : val
26
29
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BugBunny
4
- VERSION = "4.5.0"
4
+ VERSION = "4.5.2"
5
5
  end
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: 4.5.0
4
+ version: 4.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - gabix
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-27 00:00:00.000000000 Z
11
+ date: 2026-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny