class XRayCause

Constants

MAX_DEPTH

Public Class Methods

new(lambda_error) click to toggle source
# File lib/aws_lambda_ric/xray_cause.rb, line 8
def initialize(lambda_error)
  @cause = {
    working_directory: Dir.pwd,
    paths: Gem.paths.path,
    exceptions: lambda_error ? normalize(err: lambda_error) : lambda_error
  }
end

Public Instance Methods

as_json() click to toggle source
# File lib/aws_lambda_ric/xray_cause.rb, line 16
def as_json
  @as_json ||= begin
    JSON.dump(@cause)
  end
end

Private Instance Methods

normalize(err:) click to toggle source
# File lib/aws_lambda_ric/xray_cause.rb, line 24
def normalize(err:)
  exception = {
    message: err[:errorMessage],
    type: err[:errorType]
  }

  backtrace = err[:stackTrace]
  if backtrace
    exception[:stack] = backtrace.first(MAX_DEPTH).collect do |t|
      {
        path: t.path,
        line: t.lineno,
        label: t.label
      }
    end
  end
  [exception]
end