Module: BerkeleyLibrary::Logging::ExceptionSerializer

Included in:
SafeSerializer
Defined in:
lib/berkeley_library/logging/exception_serializer.rb

Instance Method Summary collapse

Instance Method Details

#serialize_exc(ex, serialized = Set.new) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/berkeley_library/logging/exception_serializer.rb', line 4

def serialize_exc(ex, serialized = Set.new)
  raw_result = { name: ex.class.name, message: ex.message, stack: ex.backtrace }
  raw_result.tap do |result|
    next unless (cause = ex.cause)
    next if (serialized << ex).include?(cause) # prevent circular references

    result[:cause] = serialize_exc(cause, serialized)
  end
end