Class: Sentry::Backtrace::Line Private
- Inherits:
-
Object
- Object
- Sentry::Backtrace::Line
- Defined in:
- lib/sentry/backtrace.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Handles backtrace parsing line by line
Constant Summary collapse
- RB_EXTENSION =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
".rb"
- RUBY_INPUT_FORMAT =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
regexp (optional leading X: on windows, or JRuby9000 class-prefix)
/ ^ \s* (?: [a-zA-Z]: | uri:classloader: )? ([^:]+ | <.*>): (\d+) (?: :in\s('|`)([^']+)')?$ /x
- JAVA_INPUT_FORMAT =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
/^(.+)\.([^\.]+)\(([^\:]+)\:(\d+)\)$/
Instance Attribute Summary collapse
-
#file ⇒ Object
readonly
private
The file portion of the line (such as app/models/user.rb).
- #in_app_pattern ⇒ Object readonly private
-
#method ⇒ Object
readonly
private
The method of the line (such as index).
-
#module_name ⇒ Object
readonly
private
The module name (JRuby).
-
#number ⇒ Object
readonly
private
The line number portion of the line.
Class Method Summary collapse
-
.parse(unparsed_line, in_app_pattern = nil) ⇒ Line
private
Parses a single line of a given backtrace.
Instance Method Summary collapse
- #==(other) ⇒ Object private
- #in_app ⇒ Object private
-
#initialize(file, number, method, module_name, in_app_pattern) ⇒ Line
constructor
private
A new instance of Line.
- #inspect ⇒ Object private
-
#to_s ⇒ Object
private
Reconstructs the line in a readable fashion.
Constructor Details
#initialize(file, number, method, module_name, in_app_pattern) ⇒ Line
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Line.
51 52 53 54 55 56 57 |
# File 'lib/sentry/backtrace.rb', line 51 def initialize(file, number, method, module_name, in_app_pattern) @file = file @module_name = module_name @number = number.to_i @method = method @in_app_pattern = in_app_pattern end |
Instance Attribute Details
#file ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The file portion of the line (such as app/models/user.rb)
22 23 24 |
# File 'lib/sentry/backtrace.rb', line 22 def file @file end |
#in_app_pattern ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
33 34 35 |
# File 'lib/sentry/backtrace.rb', line 33 def in_app_pattern @in_app_pattern end |
#method ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The method of the line (such as index)
28 29 30 |
# File 'lib/sentry/backtrace.rb', line 28 def method @method end |
#module_name ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The module name (JRuby)
31 32 33 |
# File 'lib/sentry/backtrace.rb', line 31 def module_name @module_name end |
#number ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The line number portion of the line
25 26 27 |
# File 'lib/sentry/backtrace.rb', line 25 def number @number end |
Class Method Details
.parse(unparsed_line, in_app_pattern = nil) ⇒ Line
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Parses a single line of a given backtrace
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sentry/backtrace.rb', line 38 def self.parse(unparsed_line, in_app_pattern = nil) ruby_match = unparsed_line.match(RUBY_INPUT_FORMAT) if ruby_match _, file, number, _, method = ruby_match.to_a file.sub!(/\.class$/, RB_EXTENSION) module_name = nil else java_match = unparsed_line.match(JAVA_INPUT_FORMAT) _, module_name, method, file, number = java_match.to_a end new(file, number, method, module_name, in_app_pattern) end |
Instance Method Details
#==(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
74 75 76 |
# File 'lib/sentry/backtrace.rb', line 74 def ==(other) to_s == other.to_s end |
#in_app ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
59 60 61 62 63 64 65 66 67 |
# File 'lib/sentry/backtrace.rb', line 59 def in_app return false unless in_app_pattern if file =~ in_app_pattern true else false end end |
#inspect ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
78 79 80 |
# File 'lib/sentry/backtrace.rb', line 78 def inspect "<Line:#{self}>" end |
#to_s ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Reconstructs the line in a readable fashion
70 71 72 |
# File 'lib/sentry/backtrace.rb', line 70 def to_s "#{file}:#{number}:in `#{method}'" end |