class StackifyRubyAPM::ErrorBuilder
@api private
Public Class Methods
new(agent)
click to toggle source
# File lib/stackify_apm/error_builder.rb, line 8 def initialize(agent) @agent = agent end
Public Instance Methods
build_exception(exception, handled: true)
click to toggle source
# File lib/stackify_apm/error_builder.rb, line 12 def build_exception(exception, handled: true) error = Error.new error.exception = Error::Exception.new(exception, handled: handled) if exception.backtrace add_stacktrace error, :exception, exception.backtrace end add_transaction_id error if (transaction = StackifyRubyAPM.current_transaction) error.context = transaction.context.dup end error end
build_log(message, backtrace: nil, **attrs)
click to toggle source
# File lib/stackify_apm/error_builder.rb, line 29 def build_log(message, backtrace: nil, **attrs) error = Error.new error.log = Error::Log.new(message, **attrs) add_stacktrace error, :log, backtrace if backtrace add_transaction_id error error end
Private Instance Methods
add_stacktrace(error, kind, backtrace)
click to toggle source
# File lib/stackify_apm/error_builder.rb, line 41 def add_stacktrace(error, kind, backtrace) stacktrace = @agent.stacktrace_builder.build(backtrace, :error) return unless stacktrace case kind when :exception error.exception.stacktrace = stacktrace when :log error.log.stacktrace = stacktrace end error.culprit = stacktrace.frames.first.function end
add_transaction_id(error)
click to toggle source
# File lib/stackify_apm/error_builder.rb, line 56 def add_transaction_id(error) return unless (transaction = StackifyRubyAPM.current_transaction) error.transaction_id = transaction.id end