Create note on discontinued development
[merb_mart.git] / app / views / exceptions / internal_server_error.html.erb
bloba5a6f379892ebac55875a253265738af0e90843a
1 <html>
2 <head>
3  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
4  <title><%= @exception_name %></title>
5  <style type="text/css" media="screen">
6   body {
7    font-family:arial;
8    font-size:11px;
9   }
10   h1 {
11    font-size:48px;
12    letter-spacing:-4px;
13    margin:0;
14    line-height:36px;
15    color:#333;
16   }
17    h1 sup {
18     font-size: 0.5em;
19    }
20    h1 sup.error_500, h1 sup.error_400 {
21     color:#990E05;
22    }
23    h1 sup.error_100, h1 sup.error_200 {
24     color:#00BF10;
25    }
26    h1 sup.error_300 {
27     /* pretty sure you cant 'see' status 300
28     errors but if you could I think they
29     would be blue */
30     color:#1B2099;
31    }
32   h2 {
33    font-size:36px;
34    letter-spacing:-3px;
35    margin:0;
36    line-height:28px;
37    color:#444;
38   }
39   a, a:visited {
40    color:#00BF10;
41   }
42   .internalError {
43    width:800px;
44    margin:50px auto;
45   }
46   .header {
47    border-bottom:10px solid #333;
48    margin-bottom:1px;
49    background-image: url("data:image/gif;base64,R0lGODlhAwADAIAAAP///8zMzCH5BAAAAAAALAAAAAADAAMAAAIEBHIJBQA7");
50    padding:20px;
51   }
52   table.trace {
53    width:100%;
54    font-family:courier, monospace;
55    letter-spacing:-1px;
56    border-collapse: collapse;
57    border-spacing:0;
58   }
59   table.trace tr td{
60    padding:0;
61    height:26px;
62    font-size:13px;
63    vertical-align:middle;
64   }
65   table.trace tr.file{
66    border-top:2px solid #fff;
67    background-color:#F3F3F3;
68   }
69   table.trace tr.source {
70    background-color:#F8F8F8;
71    display:none;
72   }
73   table.trace .open tr.source {
74    display:table-row;
75   }
76    table.trace tr.file td.expand {
77     width:23px;
78     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=);
79     background-position:top left;
80     background-repeat:no-repeat;
81    }
82    table.trace .open tr.file td.expand {
83     width:19px;
84     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNrslK1ywkAUhcMOBomEOiSdqLxEBJX0NaijOsjyHGGmCGyQQYaiiiw4gktkcOmZbpsuuzQ/M5XnqJ2d3S/n3nM3rTzPLUP7/Tt0+pLcGQwG3W53OLyHzPMtjYL7q9UqSRLrD4E1Gj1orCvKYuFHUWTVkOM44/HjDcp8/lL4r6NerzeZPMm1KFw0QkDn83m5fP2lHA4fNQvRtNvtjsfDd0WzmSfb2e/fdTqdOvdh/HLJZLOn0+d2HJ+KRGzbdl23EpFlmed5cp2maRzHQq1lvQ5KMi6EUZBGfup6E1pTfd+vrGW7jbQ2C9hTt9BpqNyIWaAwAy6xg2eBz5iRC/NomiZhGN5sqmnkauo0BUGgVQoBjQ80oCACgNQdZHfTYBkF2mxCtWWAqunWpahxIDUt3QYUxIFQpJHyIWpXjinabKbbwItMHT+NyjchrP8QKaSQQgoppJBCCimkkEIKKaSQQgoppJBCCimkkEIKKaSo+hRgAEFD17X08O2NAAAAAElFTkSuQmCC);
85     background-position:top left;
86     background-repeat:no-repeat;
87    }
88    table.trace tr.source td.collapse {
89     width:19px;
90     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrs0zFygkAUBmBlUkgJHdABlQwVkVJKKUxBYWbkALTxMJwhltyDFkss03IF8pudIcwaDaDl/6pd2P327b7d+eHwMXs4lNkzggoVKlSoUKFChQoVKlSoUKFChQoVKlSoUKFChQqVEYqm6ft9+qiSJEkYho7jTlcw2fd9NOI4nq4gEdFwXXe1Cqco63VkWVbXRTqLhTpOwQRpF7quR1E0TgGhqvLKUFCyoQqG/rks3O6kZKW/eRFpevOCoGTXVTcMQ5EyxyDEkML1c5RzuZOICIyXqn7JBVez6282MWrx731HOv2qB8Hri2lamNk0DfpVVdV1Peodappmmua8bdvzuc7zfNprzrLMth1FnGh/X8MjCAIQv/cFz/+65PcDh7rbvYv2ZUfdj+PxsyzLgVl0hKwgTqeqKApx2LeOc7t98zyv/1FWOgvx9RPii23bmL9cetJ8Ed8CDAC6aFW8bCzFhwAAAABJRU5ErkJggg==);
91     background-position:bottom left;
92     background-repeat:no-repeat;
93     background-color:#6F706F;
94    }
95    table.trace tr td.path {
96     padding-left:10px;
97    }
98    table.trace tr td.code {
99     padding-left:35px;
100     white-space: pre;
101     line-height:9px;
102     padding-bottom:10px;
103    }
104     table.trace tr td.code em {
105      font-weight:bold;
106      color:#00BF10;
107     }
108     table.trace tr td.code a {
109       width: 20px;
110       float: left;
111     }
112     table.trace tr td.code .more {
113      color:#666;
114     }
115    table.trace tr td.line {
116     width:30px;
117     text-align:right;
118     padding-right:4px;
119    }
120   .footer {
121    margin-top:5px;
122    font-size:11px;
123    color:#444;
124    text-align:right;
125   }
126  </style>
127 </head>
128 <body>
129  <div class="internalError">
131   <div class="header">
132    <h1><%= @exception_name %> <sup class="error_<%= @exception.class::STATUS %>"><%= @exception.class::STATUS %></sup></h1>
133    <% if show_details = ::Merb::Config[:exception_details] -%>
134     <h2><%= @exception.message %></h2>
135    <% else -%>
136     <h2>Sorry about that...</h2>
137    <% end -%>
138    <h3>Parameters</h3>
139    <ul>
140    <% params[:original_params].each do |param, value| %>
141     <li><strong><%= param %>:</strong> <%= value.inspect %></li>
142    <% end %>
143    <%= "<li>None</li>" if params[:original_params].empty? %>
144    </ul>
146    <h3>Session</h3>
147    <ul>
148    <% params[:original_session].each do |param, value| %>
149     <li><strong><%= param %>:</strong> <%= value.inspect %></li>
150    <% end %>
151    <%= "<li>None</li>" if params[:original_session].empty? %>
152    </ul>
154    <h3>Cookies</h3>
155    <ul>
156    <% params[:original_cookies].each do |param, value| %>
157     <li><strong><%= param %>:</strong> <%= value.inspect %></li>
158    <% end %>
159    <%= "<li>None</li>" if params[:original_cookies].empty? %>
160    </ul>
161   </div>
163  <% if show_details %>
164   <table class="trace">
165    <% @exception.backtrace.each_with_index do |line, index| %>
166     <tbody class="close">
167      <tr class="file">
168       <td class="expand">
169       </td>
170       <td class="path">
171        <%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %>
172        <% unless line.match(/\.erb:/) %>
173                 in "<strong><%= line.match(/:in `(.+)'$/)[1] rescue '?' %></strong>"
174               <% else %>
175                 (<strong>ERB Template</strong>)
176               <% end %>
177       </td>
178       <td class="line">
179        <a href="txmt://open?url=file://<%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%>&amp;line=<%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %>"><%=lineno%></a>&nbsp;
180       </td>
181      </tr>
182      <tr class="source">
183       <td class="collapse">
184       </td>
185       <td class="code" colspan="2"><% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %>
186 <a href="txmt://open?url=file://<%=file%>&amp;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 %>
187 <% end %>
189 </td>
190      </tr>
191     </tbody>
192    <% end %>
193   </table>
194   <script type="text/javascript" charset="utf-8">
195    // swop the open & closed classes
196    els = document.getElementsByTagName('td');
197    for(i=0; i<els.length; i++){
198     if(els[i].className=='expand' || els[i].className=='collapse'){
199      els[i].onclick = function(e){
200       tbody = this.parentNode.parentNode;
201       if(tbody.className=='open'){
202        tbody.className='closed';
203       }else{
204        tbody.className='open';
205       }
206      }
207     }
208    }
209   </script>
210  <% end %>
211  <div class="footer">
212   lots of love, from <a href="#">merb</a>
213  </div>
214  </div>
215 </body>
216 </html>