BnM*_*cGn 8 lisp debugging common-lisp hunchentoot
我发现在编写Hunchentoot时,增量开发往往会中断.
例如,我可能会编写一个由几个函数组成的网页.如果其中一个内部函数包含调用 - 比如 - hunchentoot:post-parameters*那么我就不能轻易地在REPL中测试该函数.它会出错,因为*request*不存在,除非Web客户端调用该页面.
如果存在一些函数或其他源,那么我可以测试我的函数:
>(let* ((*request* (get-previous-request-from-somewhere))
(*session* (slot-value *request* 'hunchentoot:session)))
(my-function <whatever params>))
Run Code Online (Sandbox Code Playgroud)
它或类似的东西存在吗?我是否忽略了更好的调试方法?
我的临时解决方案看起来像这样:
(defparameter *save-last-request* t)
(defvar *last-request* nil)
(defun store-request ()
(when *save-last-request*
(setf *last-request* *request*)))
(defmacro with-last-request (&body body)
`(let* ((*request* *last-request*)
(*session* (slot-value *request* 'hunchentoot:session)))
,@body))
Run Code Online (Sandbox Code Playgroud)
它适用于每个处理程序需要调用的警告store-request
.
归档时间: |
|
查看次数: |
340 次 |
最近记录: |