Exception: BugBunny::RemoteError
- Inherits:
-
ServerError
- Object
- StandardError
- Error
- ServerError
- BugBunny::RemoteError
- Defined in:
- lib/bug_bunny/remote_error.rb
Overview
Error 500 especial que propagationa información de una excepción remota.
Cuando un controller levanta una excepción no manejada en el worker, esta clase permite al llamador RPC acceder a:
-
La clase original de la excepción (ej: ActiveRecord::RecordNotFound)
-
El mensaje original
-
El backtrace completo para debugging
Mantiene compatibilidad hacia atrás: si la respuesta no contiene bug_bunny_exception, se comporta como un InternalServerError común.
Instance Attribute Summary collapse
-
#original_backtrace ⇒ Array<String>
readonly
El backtrace original de la excepción.
-
#original_class ⇒ String
readonly
La clase de la excepción remota (ej: ‘ActiveRecord::RecordNotFound’).
-
#original_message ⇒ String
readonly
El mensaje original de la excepción.
Class Method Summary collapse
-
.serialize(exception, max_lines: 25) ⇒ Hash
Serializa una excepción para transmitirse como parte de la respuesta.
Instance Method Summary collapse
-
#initialize(original_class, message, backtrace) ⇒ RemoteError
constructor
Inicializa la excepción remota propagada desde el worker.
-
#to_s ⇒ String
Representación legible de la excepción.
Constructor Details
#initialize(original_class, message, backtrace) ⇒ RemoteError
Inicializa la excepción remota propagada desde el worker.
42 43 44 45 46 47 48 |
# File 'lib/bug_bunny/remote_error.rb', line 42 def initialize(original_class, , backtrace) @original_class = original_class @original_message = @original_backtrace = backtrace || [] super() set_backtrace(backtrace || []) end |
Instance Attribute Details
#original_backtrace ⇒ Array<String> (readonly)
Returns El backtrace original de la excepción.
22 23 24 |
# File 'lib/bug_bunny/remote_error.rb', line 22 def original_backtrace @original_backtrace end |
#original_class ⇒ String (readonly)
Returns La clase de la excepción remota (ej: ‘ActiveRecord::RecordNotFound’).
16 17 18 |
# File 'lib/bug_bunny/remote_error.rb', line 16 def original_class @original_class end |
#original_message ⇒ String (readonly)
Returns El mensaje original de la excepción.
19 20 21 |
# File 'lib/bug_bunny/remote_error.rb', line 19 def @original_message end |
Class Method Details
.serialize(exception, max_lines: 25) ⇒ Hash
Serializa una excepción para transmitirse como parte de la respuesta.
29 30 31 32 33 34 35 |
# File 'lib/bug_bunny/remote_error.rb', line 29 def self.serialize(exception, max_lines: 25) { class: exception.class.name, message: exception., backtrace: exception.backtrace&.first(max_lines) || [] } end |
Instance Method Details
#to_s ⇒ String
Returns Representación legible de la excepción.
51 52 53 |
# File 'lib/bug_bunny/remote_error.rb', line 51 def to_s "#{self.class.name}(#{original_class}): #{super}" end |