Class: ExisRay::Configuration
- Inherits:
-
Object
- Object
- ExisRay::Configuration
- Defined in:
- lib/exis_ray/configuration.rb
Overview
Clase de configuración global para la gema. Permite personalizar los headers de trazabilidad y definir las clases de la aplicación host que la gema utilizará para gestionar el contexto (Current) y el reporte de errores (Reporter).
Instance Attribute Summary collapse
-
#current_class ⇒ String, ...
Se utiliza para inyectar/leer user_id, isp_id y correlation_id.
-
#deployment_environment ⇒ String?
Por defecto lee ‘Rails.env` si Rails está disponible.
-
#log_format ⇒ Symbol
Puede ser ‘:text` (comportamiento por defecto de Rails) o `:json` (formato estructurado).
-
#log_subscriber_class ⇒ String?
Usada para inyectar campos extra en cada log de request HTTP via ‘extra_fields`.
-
#propagation_trace_header ⇒ String
Por defecto es ‘X-Amzn-Trace-Id’.
-
#reporter_class ⇒ String, ...
Se recomienda usar un String para evitar problemas de carga (autoloading) durante la inicialización.
-
#service_version ⇒ String?
Por defecto intenta leer ‘Rails.application.config.x.version` si Rails está disponible.
-
#trace_header ⇒ String
Por defecto es ‘HTTP_X_AMZN_TRACE_ID’.
Instance Method Summary collapse
- #default_deployment_environment ⇒ Object
-
#default_service_version ⇒ String?
Lee la versión del servicio desde la configuración de Rails.
-
#initialize ⇒ Configuration
constructor
Inicializa la configuración con valores por defecto compatibles con AWS X-Ray.
-
#json_logs? ⇒ Boolean
Indica si la aplicación está configurada para emitir logs en formato estructurado (JSON).
Constructor Details
#initialize ⇒ Configuration
Inicializa la configuración con valores por defecto compatibles con AWS X-Ray.
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/exis_ray/configuration.rb', line 56 def initialize @trace_header = "HTTP_X_AMZN_TRACE_ID" @propagation_trace_header = "X-Amzn-Trace-Id" @reporter_class = nil @current_class = nil @log_format = :text @log_subscriber_class = nil @service_version = default_service_version @deployment_environment = default_deployment_environment end |
Instance Attribute Details
#current_class ⇒ String, ...
Se utiliza para inyectar/leer user_id, isp_id y correlation_id.
28 29 30 |
# File 'lib/exis_ray/configuration.rb', line 28 def current_class @current_class end |
#deployment_environment ⇒ String?
Por defecto lee ‘Rails.env` si Rails está disponible.
53 54 55 |
# File 'lib/exis_ray/configuration.rb', line 53 def deployment_environment @deployment_environment end |
#log_format ⇒ Symbol
Puede ser ‘:text` (comportamiento por defecto de Rails) o `:json` (formato estructurado).
34 35 36 |
# File 'lib/exis_ray/configuration.rb', line 34 def log_format @log_format end |
#log_subscriber_class ⇒ String?
Usada para inyectar campos extra en cada log de request HTTP via ‘extra_fields`. Si es nil, se usa ExisRay::LogSubscriber directamente (sin campos extra).
41 42 43 |
# File 'lib/exis_ray/configuration.rb', line 41 def log_subscriber_class @log_subscriber_class end |
#propagation_trace_header ⇒ String
Por defecto es ‘X-Amzn-Trace-Id’.
16 17 18 |
# File 'lib/exis_ray/configuration.rb', line 16 def propagation_trace_header @propagation_trace_header end |
#reporter_class ⇒ String, ...
Se recomienda usar un String para evitar problemas de carga (autoloading) durante la inicialización.
22 23 24 |
# File 'lib/exis_ray/configuration.rb', line 22 def reporter_class @reporter_class end |
#service_version ⇒ String?
Por defecto intenta leer ‘Rails.application.config.x.version` si Rails está disponible.
47 48 49 |
# File 'lib/exis_ray/configuration.rb', line 47 def service_version @service_version end |
#trace_header ⇒ String
Por defecto es ‘HTTP_X_AMZN_TRACE_ID’.
11 12 13 |
# File 'lib/exis_ray/configuration.rb', line 11 def trace_header @trace_header end |
Instance Method Details
#default_deployment_environment ⇒ Object
92 93 94 95 96 |
# File 'lib/exis_ray/configuration.rb', line 92 def default_deployment_environment return unless defined?(Rails) && Rails.respond_to?(:env) Rails.env.to_s end |
#default_service_version ⇒ String?
Lee la versión del servicio desde la configuración de Rails. Busca primero en ‘config.version` (atributo directo) y luego en `config.x.version` (custom config namespace). Retorna nil si ninguno está definido.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/exis_ray/configuration.rb', line 72 def default_service_version return unless defined?(Rails) && Rails.application&.config config = Rails.application.config # Primero: config.version (atributo directo definido en Application) version = config.version if config.respond_to?(:version) return version.to_s if version.present? # Fallback: config.x.version (custom config namespace) if config.respond_to?(:x) && config.x.respond_to?(:version) x_version = config.x.version return x_version.to_s if x_version.present? end nil rescue StandardError nil end |
#json_logs? ⇒ Boolean
Indica si la aplicación está configurada para emitir logs en formato estructurado (JSON).
101 102 103 |
# File 'lib/exis_ray/configuration.rb', line 101 def json_logs? @log_format == :json end |