Sha256: c112ef5054f19e06c5fac2cbc5cc9cca5162a42ab47c125041c32d05e776b7d8

Contents?: true

Size: 860 Bytes

Versions: 23

Compression:

Stored size: 860 Bytes

Contents

module Sentry
  class ExceptionInterface < Interface
    def initialize(values:)
      @values = values
    end

    def to_hash
      data = super
      data[:values] = data[:values].map(&:to_hash) if data[:values]
      data
    end

    def self.build(exception:, stacktrace_builder:)
      exceptions = Sentry::Utils::ExceptionCauseChain.exception_to_array(exception).reverse
      processed_backtrace_ids = Set.new

      exceptions = exceptions.map do |e|
        if e.backtrace && !processed_backtrace_ids.include?(e.backtrace.object_id)
          processed_backtrace_ids << e.backtrace.object_id
          SingleExceptionInterface.build_with_stacktrace(exception: e, stacktrace_builder: stacktrace_builder)
        else
          SingleExceptionInterface.new(exception: exception)
        end
      end

      new(values: exceptions)
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
sentry-ruby-core-4.8.0 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.7.3 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.7.2 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.7.1 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.7.0 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.5 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.4 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.3 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.2 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.1 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.0 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.6.0.pre.beta.0 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.5.2 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.5.1 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.5.0 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.5.0.pre.beta.1 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.4.2 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.4.1 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.4.0 lib/sentry/interfaces/exception.rb
sentry-ruby-core-4.4.0.pre.beta.0 lib/sentry/interfaces/exception.rb