lib/mnemosyne/trace.rb in mnemosyne-ruby-1.4.0 vs lib/mnemosyne/trace.rb in mnemosyne-ruby-1.5.0
- old
+ new
@@ -20,11 +20,18 @@
def <<(span)
@span << span
end
def attach_error(error)
- @errors << Error.new(error)
+ case error
+ when Exception
+ @errors << Error.new(error)
+ when String
+ @errors << Error.new(RuntimeError.new(error))
+ else
+ raise ArgumentError.new "Invalid error type: #{error.inspect}"
+ end
end
def submit
finish! unless finish
@@ -50,21 +57,27 @@
end
Error = Struct.new(:error) do
BT_REGEXP = /^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in `([^']+)')?$/
- # rubocop:disable AbcSize
def serialize
{
type: error.class.name,
- text: error.message,
- stacktrace: error.backtrace.map do |bt|
- md = BT_REGEXP.match(bt.to_s).to_a
+ text: error.message.to_s,
+ stacktrace: serialize_backtrace
+ }.compact
+ end
- {file: md[1], line: md[2], call: md[3], raw: md[0]}
- end
- }
+ private
+
+ def serialize_backtrace
+ return unless error.backtrace
+
+ error.backtrace.map do |bt|
+ md = BT_REGEXP.match(bt.to_s).to_a
+
+ {file: md[1], line: md[2], call: md[3], raw: md[0]}
+ end
end
- # rubocop:enable all
end
end
end