Class: AppPerfRpm::Backtrace

Inherits:
Object
  • Object
show all
Defined in:
lib/app_perf_rpm/backtrace.rb

Class Method Summary collapse

Class Method Details

.backtraceObject



4
5
6
7
8
# File 'lib/app_perf_rpm/backtrace.rb', line 4

def backtrace
  bt = Kernel.caller
  bt = clean(bt)
  trim_backtrace(bt)
end

.clean(backtrace) ⇒ Object



10
11
12
13
14
# File 'lib/app_perf_rpm/backtrace.rb', line 10

def clean(backtrace)
  backtrace
    .map {|b| clean_line(b) }
    .select {|b| b !~ %r{lib/app_perf_rpm} }
end

.source_extract(_backtrace = Kernel.caller(0)) ⇒ Object

{

    code: source_fragment(file, line_number),
    line_number: line_number
  }
else
  nil
end

end



29
30
31
32
33
34
# File 'lib/app_perf_rpm/backtrace.rb', line 29

def source_extract(_backtrace = Kernel.caller(0))
  Array(_backtrace).select {|bt| bt[/^#{::AppPerfRpm.configuration.app_root.to_s}\//] }.map do |trace|
    file, line_number = extract_file_and_line_number(trace)
    source_to_hash(file, line_number)
  end
end

.source_to_hash(file, line_number) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/app_perf_rpm/backtrace.rb', line 36

def source_to_hash(file, line_number)
  {
    "file" => clean_line(file),
    "code" => source_fragment(file, line_number),
    "line_number" => line_number
  }
end