Class: Lapsoss::BacktraceFrameFactory
- Inherits:
-
Object
- Object
- Lapsoss::BacktraceFrameFactory
- Defined in:
- lib/lapsoss/backtrace_frame_factory.rb
Constant Summary collapse
- BACKTRACE_PATTERNS =
Backtrace line patterns for different Ruby implementations
[ # Standard Ruby format: filename.rb:123:in `method_name' /^(?<filename>[^:]+):(?<line>\d+):in [`'](?<method>.*?)[`']$/, # Ruby format without method: filename.rb:123 /^(?<filename>[^:]+):(?<line>\d+)$/, # JRuby format: filename.rb:123:in method_name /^(?<filename>[^:]+):(?<line>\d+):in (?<method>.*)$/, # Eval'd code: (eval):123:in `method_name' /^\(eval\):(?<line>\d+):in [`'](?<method>.*?)[`']$/, # Block format: filename.rb:123:in `block in method_name' /^(?<filename>[^:]+):(?<line>\d+):in [`']block (?<block_level>\(\d+\s+levels\)\s+)?in (?<method>.*?)[`']$/, # Native extension format: [native_gem] filename.c:123:in `method_name' /^\[(?<native_gem>[^\]]+)\]\s*(?<filename>[^:]+):(?<line>\d+):in [`'](?<method>.*?)[`']$/, # Java backtrace format: org.jruby.Ruby.runScript(Ruby.java:123) /^(?<method>[^(]+)\((?<filename>[^:)]+):(?<line>\d+)\)$/, # Java backtrace format without line number: org.jruby.Ruby.runScript(Ruby.java) /^(?<method>[^(]+)\((?<filename>[^:)]+)\)$/, # Malformed Ruby format with invalid line number: filename.rb:abc:in `method' /^(?<filename>[^:]+):(?<line>[^:]*):in [`'](?<method>.*?)[`']$/, # Malformed Ruby format with missing line number: filename.rb::in `method' /^(?<filename>[^:]+)::in [`'](?<method>.*?)[`']$/, # Malformed Ruby format with missing method: filename.rb:123:in /^(?<filename>[^:]+):(?<line>\d+):in$/ ].freeze
- LIBRARY_INDICATORS =
Common paths that indicate library/gem code
[ "/gems/", "/.bundle/", "/vendor/", "/ruby/", "(eval)", "(irb)", "/lib/ruby/", "/rbenv/", "/rvm/", "/usr/lib/ruby", "/System/Library/Frameworks" ].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #create_frame(raw_line) ⇒ Object
-
#initialize(in_app_patterns: [], exclude_patterns: [], load_paths: []) ⇒ BacktraceFrameFactory
constructor
A new instance of BacktraceFrameFactory.
Constructor Details
#initialize(in_app_patterns: [], exclude_patterns: [], load_paths: []) ⇒ BacktraceFrameFactory
Returns a new instance of BacktraceFrameFactory.
61 62 63 64 65 |
# File 'lib/lapsoss/backtrace_frame_factory.rb', line 61 def initialize(in_app_patterns: [], exclude_patterns: [], load_paths: []) @in_app_patterns = Array(in_app_patterns) @exclude_patterns = Array(exclude_patterns) @load_paths = Array(load_paths) end |
Class Method Details
.from_raw_line(raw_line, in_app_patterns: [], exclude_patterns: [], load_paths: []) ⇒ Object
56 57 58 59 |
# File 'lib/lapsoss/backtrace_frame_factory.rb', line 56 def self.from_raw_line(raw_line, in_app_patterns: [], exclude_patterns: [], load_paths: []) new(in_app_patterns: in_app_patterns, exclude_patterns: exclude_patterns, load_paths: load_paths) .create_frame(raw_line) end |
Instance Method Details
#create_frame(raw_line) ⇒ Object
67 68 69 70 |
# File 'lib/lapsoss/backtrace_frame_factory.rb', line 67 def create_frame(raw_line) @raw_line = raw_line.to_s.strip parse_backtrace_line end |