Sha256: 623d67009c80e89d24b10d5b34c8addb635dc503369890680bd0e0b2d5b913e5
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true module ElasticAPM class Stacktrace # @api private class Frame include NaivelyHashable attr_accessor( :abs_path, :filename, :function, :vars, :pre_context, :context_line, :post_context, :library_frame, :lineno, :module, :colno ) # rubocop:disable Metrics/AbcSize def build_context(context_line_count) return unless abs_path && context_line_count > 0 padding = (context_line_count - 1) / 2 from = lineno - padding - 1 to = lineno + padding - 1 file_lines = read_lines(abs_path, from..to) self.context_line = file_lines[padding] self.pre_context = file_lines.first(padding) self.post_context = file_lines.last(padding) end # rubocop:enable Metrics/AbcSize private def read_lines(path, range) if (cached = LineCache.get(path, range)) return cached end LineCache.set(path, range, File.readlines(path)[range]) || [] rescue Errno::ENOENT [] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
elastic-apm-0.6.2 | lib/elastic_apm/stacktrace/frame.rb |
elastic-apm-0.6.1 | lib/elastic_apm/stacktrace/frame.rb |
elastic-apm-0.5.1 | lib/elastic_apm/stacktrace/frame.rb |