Module: ExceptionBrowser::Plugin::ClassMethods

Defined in:
lib/exception_browser_plugin/rails/controller_extensions.rb

Instance Method Summary collapse

Instance Method Details

#clean_backtrace_regexObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/exception_browser_plugin/rails/controller_extensions.rb', line 40

def clean_backtrace_regex
  if @clean_backtrace_regex.nil?
    rails_path_prefixes= Pathname.new(RAILS_ROOT).cleanpath.to_s
    
    paths = `gem environment gempath`.strip.split(":")
    gems_path_prefixes = paths.collect { |path| Pathname.new(path+"/gems").cleanpath.to_s }
    
    paths = `ruby -e 'puts $:.reject{|p|p=="."}.join(":")'`.strip.split(":")
    system_path_prefixes = paths.collect { |path| Pathname.new(path).cleanpath.to_s }
    
    @clean_backtrace_regex = { 
      :rails  => /^(#{Regexp.escape(rails_path_prefixes)})/,
      :gems   => /^(#{gems_path_prefixes.collect{|path|Regexp.escape(path)}.join('|')})/,
      :system => /^(#{system_path_prefixes.collect{|path|Regexp.escape(path)}.join('|')})/
    }
  end
  @clean_backtrace_regex
end

#exception_data(deliverer = self, &block) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/exception_browser_plugin/rails/controller_extensions.rb', line 31

def exception_data(deliverer = self, &block)
  deliverer = block if block
  if deliverer == self
    read_inheritable_attribute(:exception_data)
  else
    write_inheritable_attribute(:exception_data, deliverer)
  end
end

#sanitaize_backtrace_entry(line) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/exception_browser_plugin/rails/controller_extensions.rb', line 59

def sanitaize_backtrace_entry(line)
  line = line.strip
  line.gsub!('in `', "")
  line.gsub!("'", "")
  line.gsub!(clean_backtrace_regex[:rails],  "[RAILS_ROOT]")
  line.gsub!(clean_backtrace_regex[:gems],   "[GEM]")
  line.gsub!(clean_backtrace_regex[:system], "[SYSTEM]")
  Pathname.new(line).cleanpath.to_s
end