Module: Merb::Dispatcher::DefaultExceptionHelper
- Defined in:
- lib/merb-core/dispatch/default_exception/default_exception.rb
Overview
:api: private
Instance Method Summary collapse
-
#error_codes(exception) ⇒ Object
:api: private.
-
#frame_details(line) ⇒ Object
:api: private.
-
#humanize_exception(e) ⇒ Object
:api: private.
- #jar?(filename) ⇒ Boolean
-
#listing(key, value, arr) ⇒ Object
:api: private.
-
#render_source(filename, line) ⇒ Object
:api: private.
-
#textmate_url(filename, line) ⇒ Object
:api: private.
Instance Method Details
#error_codes(exception) ⇒ Object
:api: private
12 13 14 15 16 17 18 19 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 12 def error_codes(exception) if @show_details , = exception..split("\n", 2) "<h2>#{escape_html()}</h2><p>#{escape_html()}</p>" else "<h2>Sorry about that...</h2>" end end |
#frame_details(line) ⇒ Object
:api: private
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 22 def frame_details(line) if (match = line.match(/^(.+):(\d+):(.+)$/)) filename = match[1] lineno = match[2] location = match[3] if filename.index(Merb.framework_root) == 0 type = "framework" shortname = Pathname.new(filename).relative_path_from(Pathname.new(Merb.framework_root)) elsif filename.index(Merb.root) == 0 type = "app" shortname = Pathname.new(filename).relative_path_from(Pathname.new(Merb.root)) elsif path = Gem.path.find {|p| filename.index(p) == 0} type = "gem" shortname = Pathname.new(filename).relative_path_from(Pathname.new(path)) else type = "other" shortname = filename end [type, shortname, filename, lineno, location] else ['', '', '', nil, nil] end end |
#humanize_exception(e) ⇒ Object
:api: private
7 8 9 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 7 def humanize_exception(e) e.class.name.split("::").last.gsub(/([a-z])([A-Z])/, '\1 \2') end |
#jar?(filename) ⇒ Boolean
66 67 68 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 66 def jar?(filename) filename.match(/jar\!/) end |
#listing(key, value, arr) ⇒ Object
:api: private
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 47 def listing(key, value, arr) ret = [] ret << "<table class=\"listing\" style=\"display: none\">" ret << " <thead>" ret << " <tr><th width='25%'>#{key}</th><th width='75%'>#{value}</th></tr>" ret << " </thead>" ret << " <tbody>" (arr || []).each_with_index do |(key, val), i| klass = i % 2 == 0 ? "even" : "odd" ret << " <tr class=\"#{klass}\"><td>#{key}</td><td>#{val.inspect}</td></tr>" end if arr.blank? ret << " <tr class='odd'><td colspan='2'>None</td></tr>" end ret << " </tbody>" ret << "</table>" ret.join("\n") end |
#render_source(filename, line) ⇒ Object
:api: private
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 76 def render_source(filename, line) line = line.to_i ret = [] ret << "<tr class='source'>" ret << " <td class='collapse'></td>" str = " <td class='code' colspan='2'><div>" __caller_lines__(filename, line, 5) do |lline, lcode| str << "<a href='txmt://open?url=file://#{filename}&line=#{lline}'>#{lline}</a>" str << "<em>" if line == lline str << Erubis::XmlHelper.escape_xml(lcode) str << "</em>" if line == lline str << "\n" end str << "</div></td>" ret << str ret << "</tr>" ret.join("\n") end |
#textmate_url(filename, line) ⇒ Object
:api: private
71 72 73 |
# File 'lib/merb-core/dispatch/default_exception/default_exception.rb', line 71 def textmate_url(filename, line) "<a href='txmt://open?url=file://#{filename}&line=#{line}'>#{line}</a>" end |