(defvar *catch-errors-p* t)Теперь, для получения удовольствия от использования отладчика достаточно просто использовать debuggable-acceptor вместо hunchentoot:acceptor при запуске сервера (hunchentoot:start).
(defclass debuggable-acceptor (hunchentoot:acceptor) ())
(defmethod hunchentoot:process-connection ((acceptor debuggable-acceptor) (socket t))
(declare (ignore socket))
(if *catch-errors-p*
(call-next-method)
(handler-bind ((error #'invoke-debugger))
(call-next-method))))
(defmethod hunchentoot:acceptor-request-dispatcher ((acceptor debuggable-acceptor))
(if *catch-errors-p*
(call-next-method)
(let ((dispatcher (handler-bind ((error #'invoke-debugger))
(call-next-method))))
(lambda (request)
(handler-bind ((error #'invoke-debugger))
(funcall dispatcher request))))))
пятница, 10 апреля 2009 г.
Отладка в hunchentoot-1.0.0
Недавно я писал о проблемах с отладкой приложений для новой версии hunchentoot. Проблема обсуждалась в рассылке и наконец Andreas Fuchs предложил решение этой проблемы, как оказалось, достаточно тривиальное. Оригинальное сообщение можно посмотреть здесь: http://common-lisp.net/pipermail/tbnl-devel/2009-April/004688.html. Я несколько модифицировал этот код (добавил управление режимом через пресловутую переменную *catch-errors-p*):
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий