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.envsi Rails está disponible. -
#emit_legacy_exception_keys ⇒ Boolean
Default
truedurante la ventana de transición OTel v1.0. -
#emit_legacy_path_key ⇒ Boolean
junto a
url.path(OTel v1.0). -
#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.versionsi 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.
75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/exis_ray/configuration.rb', line 75 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 @emit_legacy_exception_keys = true @emit_legacy_path_key = true 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 |
#emit_legacy_exception_keys ⇒ Boolean
Default true durante la ventana de transición OTel v1.0. Setear a false cuando todos los
consumers (dashboards, alertas, queries) hayan migrado a exception.* para reducir bytes
y ruido en logs.
Aplica a ExisRay::LogSubscriber (logs HTTP) y ExisRay::TaskMonitor (logs de tasks).
62 63 64 |
# File 'lib/exis_ray/configuration.rb', line 62 def emit_legacy_exception_keys @emit_legacy_exception_keys end |
#emit_legacy_path_key ⇒ Boolean
junto a url.path (OTel v1.0). Default true durante la ventana de transición.
Setear a false cuando los consumers (queries, dashboards, alertas) hayan migrado a
url.path para reducir bytes y ruido en logs.
Nota: url.path y http_route son semánticamente distintos (URL concreta vs template);
coinciden como string solo en endpoints sin params — la dupe es esperada y no se elimina.
72 73 74 |
# File 'lib/exis_ray/configuration.rb', line 72 def emit_legacy_path_key @emit_legacy_path_key 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
113 114 115 116 117 |
# File 'lib/exis_ray/configuration.rb', line 113 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.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/exis_ray/configuration.rb', line 93 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).
122 123 124 |
# File 'lib/exis_ray/configuration.rb', line 122 def json_logs? @log_format == :json end |