diff --git a/src/middlewares/recoverer.lisp b/src/middlewares/recoverer.lisp index c1239cc..31d60a5 100644 --- a/src/middlewares/recoverer.lisp +++ b/src/middlewares/recoverer.lisp @@ -1,14 +1,22 @@ (defpackage #:hp/middlewares/recoverer - (:use #:cl) + (:use #:cl + #:hsx) (:local-nicknames (#:tb #:trivial-backtrace)) (:local-nicknames (#:env #:hp/env)) (:export #:*recoverer*)) (in-package #:hp/middlewares/recoverer) -(defun message (condition) - (if (env:dev-mode-p) - (tb:print-backtrace condition :output nil) - "Internal Server Error")) +(defun error-page (condition) + (hsx + (html :lang "ja" + (head + (title "Internal Server Error")) + (body + (main + (h1 "500 Internal Server Error") + (when (env:dev-mode-p) + (pre + (code (tb:print-backtrace condition :output nil))))))))) (defparameter *recoverer* (lambda (app) @@ -16,5 +24,5 @@ (handler-case (funcall app env) (error (c) - `(500 (:content-type "text/plain") - (,(message c)))))))) + `(500 (:content-type "text/html; charset=utf-8") + (,(hsx:render-to-string (error-page c))))))))) diff --git a/src/renderer.lisp b/src/renderer.lisp index 5b14f0c..d46a4dd 100644 --- a/src/renderer.lisp +++ b/src/renderer.lisp @@ -21,8 +21,8 @@ :name "description" :content (or description "pakuの個人サイト"))) (body :hx-ext "head-support" - (main :class "container mx-auto" - children))))) + (main :class "container mx-auto" + children))))) (defmethod jg:process-response ((app jg:app) result) (jg:set-response-header :content-type "text/html; charset=utf-8")