我正在使用 Hunchentoot(在 SBCL 和 Linux 上)开发一个 Web 应用程序,通常我只是从 Emacs(SLIME)运行它,但对于部署,我想要一些更容易自动化的东西。所以我试图弄清楚 ASDF,因为这似乎是现在每个人都在使用的东西。
myapp.asd:
(in-package #:asdf)
(defsystem :myapp
:name "my app"
:depends-on ("hunchentoot")
:components ((:file "package")
(:file "server" :depends-on ("package"))))
包.lisp:
(defpackage myapp
(:use :cl))
服务器.lisp:
(setq hunchentoot:*dispatch-table*
(list (hunchentoot:create-static-file-dispatcher-and-handler "/foo" "foo")))
(hunchentoot:start-server :port 8705)
如果我尝试手动加载它:
$ sbcl
* (require 'asdf)
* (asdf:operate 'asdf:load-op 'myapp)
它加载并编译了一大堆函数,然后就停止了。Hunchentoot 没有运行,提示不接受输入。我不知道它认为它处于什么状态:打印的最后几行是:
STYLE-WARNING: Implicitly creating new generic function STRINGIFY-COOKIE.
STYLE-WARNING: Implicitly creating new generic function DISPATCH-REQUEST.
STYLE-WARNING: Implicitly creating new generic function WRITE-HEADER-LINE.
有没有办法使这项工作?(坦白:我真的不太了解 ASDF 或 Common Lisp 包,尽管阅读了很多小时。)