diff options
Diffstat (limited to 'chef-server/lib/views/exceptions/internal_server_error.html.erb')
-rw-r--r-- | chef-server/lib/views/exceptions/internal_server_error.html.erb | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/chef-server/lib/views/exceptions/internal_server_error.html.erb b/chef-server/lib/views/exceptions/internal_server_error.html.erb new file mode 100644 index 0000000000..aadbfad350 --- /dev/null +++ b/chef-server/lib/views/exceptions/internal_server_error.html.erb @@ -0,0 +1,216 @@ +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <title><%= @exception_name %></title> + <style type="text/css" media="screen"> + body { + font-family:arial; + font-size:11px; + } + h1 { + font-size:48px; + letter-spacing:-4px; + margin:0; + line-height:36px; + color:#333; + } + h1 sup { + font-size: 0.5em; + } + h1 sup.error_500, h1 sup.error_400 { + color:#990E05; + } + h1 sup.error_100, h1 sup.error_200 { + color:#00BF10; + } + h1 sup.error_300 { + /* pretty sure you cant 'see' status 300 + errors but if you could I think they + would be blue */ + color:#1B2099; + } + h2 { + font-size:36px; + letter-spacing:-3px; + margin:0; + line-height:28px; + color:#444; + } + a, a:visited { + color:#00BF10; + } + .internalError { + width:800px; + margin:50px auto; + } + .header { + border-bottom:10px solid #333; + margin-bottom:1px; + background-image: url("data:image/gif;base64,R0lGODlhAwADAIAAAP///8zMzCH5BAAAAAAALAAAAAADAAMAAAIEBHIJBQA7"); + padding:20px; + } + table.trace { + width:100%; + font-family:courier, monospace; + letter-spacing:-1px; + border-collapse: collapse; + border-spacing:0; + } + table.trace tr td{ + padding:0; + height:26px; + font-size:13px; + vertical-align:middle; + } + table.trace tr.file{ + border-top:2px solid #fff; + background-color:#F3F3F3; + } + table.trace tr.source { + background-color:#F8F8F8; + display:none; + } + table.trace .open tr.source { + display:table-row; + } + table.trace tr.file td.expand { + width:23px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAIAAABvSEP3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqMVL+TwUAYxaRIOlEhlZHGDAUzzOQ61+AqXMV1lJSU7q/QRqm8KFUcJTNn5qJkaPyoKKVz7y4mF8na5Kt29tt9+/Z97/u81+vVQ4r9frdarS6Xi7ETDIZisRjxMGPfmk4niNPpZE+xLAugbPaZ53nzvtfMBe/3+/3dbuehBrAKhZdUKkVAWa9Xsiybv0CPZDJZLr/qa5/BwgwRjYqOKIvFYjQa/aNommZh0Ww2K5UqzwfoQOPxaLPZ3FAmk0+7lplMpt1u53J5OpBOR0eZEE9wHJfP5zud93g88QhluwWbjW+5VOmKBgKBer3eaDTDYeGBQF8+x7rqIYoiPgixWJazpA6HA+MSxRArkUgMh0M409g8Ho8+9wYxxCqVSq1W26EDHGM2m4HOHQrEc38f/Yn7cLmlIRhBENzcx8cVRZnPZ/YUep2BWkjTIfA+PKVpZAXR5QxsjiqCKvGEqqp443w+0dvy17swqD0HB3S73V5PpkNg1qBqt8kwGCjmPkinM0QJbIoEa7U6UG6ToVgs4V9G2g0ESoP5Aoi7KYX5oCgf8IKbkvn9/mr1LRQKESamzgJy0g0tSZIuB3nuGqRU9Vv9C4sKkUhEkp4soxvxI8AAhWrrtXa3X8EAAAAASUVORK5CYII=); + background-position:top left; + background-repeat:no-repeat; + } + table.trace .open tr.file td.expand { + width:19px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNrslK1ywkAUhcMOBomEOiSdqLxEBJX0NaijOsjyHGGmCGyQQYaiiiw4gktkcOmZbpsuuzQ/M5XnqJ2d3S/n3nM3rTzPLUP7/Tt0+pLcGQwG3W53OLyHzPMtjYL7q9UqSRLrD4E1Gj1orCvKYuFHUWTVkOM44/HjDcp8/lL4r6NerzeZPMm1KFw0QkDn83m5fP2lHA4fNQvRtNvtjsfDd0WzmSfb2e/fdTqdOvdh/HLJZLOn0+d2HJ+KRGzbdl23EpFlmed5cp2maRzHQq1lvQ5KMi6EUZBGfup6E1pTfd+vrGW7jbQ2C9hTt9BpqNyIWaAwAy6xg2eBz5iRC/NomiZhGN5sqmnkauo0BUGgVQoBjQ80oCACgNQdZHfTYBkF2mxCtWWAqunWpahxIDUt3QYUxIFQpJHyIWpXjinabKbbwItMHT+NyjchrP8QKaSQQgoppJBCCimkkEIKKaSQQgoppJBCCimkkEIKKaSo+hRgAEFD17X08O2NAAAAAElFTkSuQmCC); + background-position:top left; + background-repeat:no-repeat; + } + table.trace tr.source td.collapse { + width:19px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrs0zFygkAUBmBlUkgJHdABlQwVkVJKKUxBYWbkALTxMJwhltyDFkss03IF8pudIcwaDaDl/6pd2P327b7d+eHwMXs4lNkzggoVKlSoUKFChQoVKlSoUKFChQoVKlSoUKFChQqVEYqm6ft9+qiSJEkYho7jTlcw2fd9NOI4nq4gEdFwXXe1Cqco63VkWVbXRTqLhTpOwQRpF7quR1E0TgGhqvLKUFCyoQqG/rks3O6kZKW/eRFpevOCoGTXVTcMQ5EyxyDEkML1c5RzuZOICIyXqn7JBVez6282MWrx731HOv2qB8Hri2lamNk0DfpVVdV1Peodappmmua8bdvzuc7zfNprzrLMth1FnGh/X8MjCAIQv/cFz/+65PcDh7rbvYv2ZUfdj+PxsyzLgVl0hKwgTqeqKApx2LeOc7t98zyv/1FWOgvx9RPii23bmL9cetJ8Ed8CDAC6aFW8bCzFhwAAAABJRU5ErkJggg==); + background-position:bottom left; + background-repeat:no-repeat; + background-color:#6F706F; + } + table.trace tr td.path { + padding-left:10px; + } + table.trace tr td.code { + padding-left:35px; + white-space: pre; + line-height:9px; + padding-bottom:10px; + } + table.trace tr td.code em { + font-weight:bold; + color:#00BF10; + } + table.trace tr td.code a { + width: 20px; + float: left; + } + table.trace tr td.code .more { + color:#666; + } + table.trace tr td.line { + width:30px; + text-align:right; + padding-right:4px; + } + .footer { + margin-top:5px; + font-size:11px; + color:#444; + text-align:right; + } + </style> +</head> +<body> + <div class="internalError"> + + <div class="header"> + <h1><%= @exception_name %> <sup class="error_<%= @exception.class::STATUS %>"><%= @exception.class::STATUS %></sup></h1> + <% if show_details = ::Merb::Config[:exception_details] -%> + <h2><%= @exception.message %></h2> + <% else -%> + <h2>Sorry about that...</h2> + <% end -%> + <h3>Parameters</h3> + <ul> + <% params[:original_params].each do |param, value| %> + <li><strong><%= param %>:</strong> <%= value.inspect %></li> + <% end %> + <%= "<li>None</li>" if params[:original_params].empty? %> + </ul> + + <h3>Session</h3> + <ul> + <% params[:original_session].each do |param, value| %> + <li><strong><%= param %>:</strong> <%= value.inspect %></li> + <% end %> + <%= "<li>None</li>" if params[:original_session].empty? %> + </ul> + + <h3>Cookies</h3> + <ul> + <% params[:original_cookies].each do |param, value| %> + <li><strong><%= param %>:</strong> <%= value.inspect %></li> + <% end %> + <%= "<li>None</li>" if params[:original_cookies].empty? %> + </ul> + </div> + + <% if show_details %> + <table class="trace"> + <% @exception.backtrace.each_with_index do |line, index| %> + <tbody class="close"> + <tr class="file"> + <td class="expand"> + </td> + <td class="path"> + <%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %> + <% unless line.match(/\.erb:/) %> + in "<strong><%= line.match(/:in `(.+)'$/)[1] rescue '?' %></strong>" + <% else %> + (<strong>ERB Template</strong>) + <% end %> + </td> + <td class="line"> + <a href="txmt://open?url=file://<%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%>&line=<%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %>"><%=lineno%></a> + </td> + </tr> + <tr class="source"> + <td class="collapse"> + </td> + <td class="code" colspan="2"><% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %> +<a href="txmt://open?url=file://<%=file%>&line=<%=llineno%>"><%= llineno %></a><%='<em>' if llineno==lineno.to_i %><%= lcode.size > 90 ? CGI.escapeHTML(lcode[0..90])+'<span class="more">......</span>' : CGI.escapeHTML(lcode) %><%='</em>' if llineno==lineno.to_i %> +<% end %> + +</td> + </tr> + </tbody> + <% end %> + </table> + <script type="text/javascript" charset="utf-8"> + // swop the open & closed classes + els = document.getElementsByTagName('td'); + for(i=0; i<els.length; i++){ + if(els[i].className=='expand' || els[i].className=='collapse'){ + els[i].onclick = function(e){ + tbody = this.parentNode.parentNode; + if(tbody.className=='open'){ + tbody.className='closed'; + }else{ + tbody.className='open'; + } + } + } + } + </script> + <% end %> + <div class="footer"> + lots of love, from <a href="#">merb</a> + </div> + </div> +</body> +</html>
\ No newline at end of file |