Module: ExisRay

Defined in:
lib/exis_ray.rb,
lib/exis_ray/tracer.rb,
lib/exis_ray/current.rb,
lib/exis_ray/railtie.rb,
lib/exis_ray/version.rb,
lib/exis_ray/reporter.rb,
lib/exis_ray/task_monitor.rb,
lib/exis_ray/configuration.rb,
lib/exis_ray/json_formatter.rb,
lib/exis_ray/log_subscriber.rb,
lib/exis_ray/http_middleware.rb,
lib/exis_ray/faraday_middleware.rb,
lib/exis_ray/sidekiq/client_middleware.rb,
lib/exis_ray/sidekiq/server_middleware.rb,
lib/exis_ray/bug_bunny/publisher_tracing.rb,
lib/exis_ray/active_resource_instrumentation.rb,
lib/exis_ray/bug_bunny/consumer_tracing_middleware.rb

Overview

Namespace principal de la gema ExisRay. Contiene la configuración global y los helpers de resolución de clases dinámicas.

Defined Under Namespace

Modules: ActiveResourceInstrumentation, BugBunny, Sidekiq, TaskMonitor Classes: Configuration, Current, Error, FaradayMiddleware, HttpMiddleware, JsonFormatter, LogSubscriber, Railtie, Reporter, Tracer

Constant Summary collapse

VERSION =

Versión actual de la gema.

"0.7.2"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationExisRay::Configuration

Accesor para la configuración global de la gema. Inicializa una nueva instancia de Configuration si no existe.

Returns:



46
47
48
# File 'lib/exis_ray.rb', line 46

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.configure {|config| ... } ⇒ Object

Bloque de configuración para inicializar la gema.

Examples:

Configurar en un initializer de Rails

ExisRay.configure do |config|
  config.trace_header = 'HTTP_X_WP_TRACE_ID'
  config.current_class = 'Current'
  config.reporter_class = 'Choto'
end

Yield Parameters:



60
61
62
# File 'lib/exis_ray.rb', line 60

def configure
  yield(configuration)
end

.current_classClass?

Resuelve y retorna la clase configurada para manejar el contexto de negocio (Current). En producción (cache_classes=true) memoiza el resultado para evitar safe_constantize en cada request. En desarrollo siempre resuelve para soportar el reloading de Zeitwerk.

Returns:

  • (Class, nil)

    La clase constante (ej: Current) o nil si no se encuentra/configura.



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/exis_ray.rb', line 71

def current_class
  return nil unless configuration

  klass_name = configuration.current_class
  return nil unless klass_name.present?

  if cache_classes?
    @current_class_cache ||= resolve_class(klass_name)
  else
    resolve_class(klass_name)
  end
end

.reporter_classClass?

Resuelve y retorna la clase configurada para el reporte de errores (Reporter). En producción memoiza el resultado. En desarrollo siempre resuelve.

Returns:

  • (Class, nil)

    La clase constante (ej: Choto) o nil si no se encuentra/configura.



88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/exis_ray.rb', line 88

def reporter_class
  return nil unless configuration

  klass_name = configuration.reporter_class
  return nil unless klass_name.present?

  if cache_classes?
    @reporter_class_cache ||= resolve_class(klass_name)
  else
    resolve_class(klass_name)
  end
end

.sync_correlation_idvoid

This method returns an undefined value.

Sincroniza el correlation_id del Tracer en la clase Current configurada. Debe llamarse después de hidratar el Tracer (post ‘hydrate` o `parse_trace_id`).



105
106
107
108
109
110
# File 'lib/exis_ray.rb', line 105

def sync_correlation_id
  curr = current_class
  return unless curr.respond_to?(:correlation_id=) && Tracer.root_id.present?

  curr.correlation_id = Tracer.correlation_id
end