Added new exception page (#466)
This commit is contained in:
parent
d0b4c0d609
commit
a13fe95201
4 changed files with 48 additions and 26 deletions
|
@ -8,6 +8,9 @@ dependencies:
|
||||||
kilt:
|
kilt:
|
||||||
github: jeromegn/kilt
|
github: jeromegn/kilt
|
||||||
version: ~> 0.4.0
|
version: ~> 0.4.0
|
||||||
|
exception_page:
|
||||||
|
github: crystal-loot/exception_page
|
||||||
|
version: ~> 0.1.1
|
||||||
|
|
||||||
targets:
|
targets:
|
||||||
kemal:
|
kemal:
|
||||||
|
|
|
@ -14,7 +14,7 @@ module Kemal
|
||||||
log("Exception: #{ex.inspect_with_backtrace}")
|
log("Exception: #{ex.inspect_with_backtrace}")
|
||||||
return call_exception_with_status_code(context, ex, 500) if Kemal.config.error_handlers.has_key?(500)
|
return call_exception_with_status_code(context, ex, 500) if Kemal.config.error_handlers.has_key?(500)
|
||||||
verbosity = Kemal.config.env == "production" ? false : true
|
verbosity = Kemal.config.env == "production" ? false : true
|
||||||
return render_500(context, ex.inspect_with_backtrace, verbosity)
|
return render_500(context, ex, verbosity)
|
||||||
end
|
end
|
||||||
|
|
||||||
private def call_exception_with_status_code(context : HTTP::Server::Context, exception : Exception, status_code : Int32)
|
private def call_exception_with_status_code(context : HTTP::Server::Context, exception : Exception, status_code : Int32)
|
||||||
|
|
38
src/kemal/exception_page.cr
Normal file
38
src/kemal/exception_page.cr
Normal file
File diff suppressed because one or more lines are too long
|
@ -21,32 +21,13 @@ def render_404
|
||||||
HTML
|
HTML
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_500(context, backtrace, verbosity)
|
def render_500(context, exception, verbosity)
|
||||||
message = if verbosity
|
template = if verbosity
|
||||||
"<pre>#{HTML.escape(backtrace)}</pre>"
|
Kemal::ExceptionPage.for_runtime_exception(context, exception).to_s
|
||||||
else
|
else
|
||||||
"<p>Something wrong with the server :(</p>"
|
Kemal::ExceptionPage.for_production_exception
|
||||||
end
|
end
|
||||||
|
|
||||||
template = <<-HTML
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style type="text/css">
|
|
||||||
body { text-align:center;font-family:helvetica,arial;font-size:22px;
|
|
||||||
color:#888;margin:20px}
|
|
||||||
#c {margin:0 auto;width:500px;text-align:left}
|
|
||||||
pre {text-align:left;font-size:14px;color:#fff;background-color:#222;
|
|
||||||
font-family:Operator,"Source Code Pro",Menlo,Monaco,Inconsolata,monospace;
|
|
||||||
line-height:1.5;padding:10px;border-radius:2px;overflow:scroll}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h2>Kemal has encountered an error. (500)</h2>
|
|
||||||
#{message}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
HTML
|
|
||||||
context.response.status_code = 500
|
context.response.status_code = 500
|
||||||
context.response.print template
|
context.response.print template
|
||||||
context
|
context
|
||||||
|
|
Loading…
Reference in a new issue