Common Lisp:Hunchentoot和REPL - 当我启动服务器时,我在REPL中得到日志输出,不能再使用REPL了

时间:2013-07-11 13:21:03

标签: lisp sublimetext2 common-lisp sbcl hunchentoot

就像这里的一些问题,我是Lisp的新手。我正在阅读Practical Common Lisp书,但是稍微看了一下,看看设置一个网络应用程序有多容易,所以我一直在关注this教程,以及{{{ 3}}

当我到达启动服务器的位置时,我的REPL就会死掉,然后我无法将任何内容推送到*dispatch-table*

基本上,我的代码在REPL中工作得很好,将对象添加到列表中,检索它们等等,然后我使用

启动服务器
(setf *web-server* (start (make-instance 'hunchentoot:acceptor :port 8080)))

效果很好,我可以在http://localhost:8080上访问它。但是当我访问它时,日志会打印到REPL,从那时起我无法实际使用REPL。例如,在Adam Petersen的帖子之后,我不能

(push (create-prefix-dispatcher "/retro-games.htm" 'retro-games) *dispatch-table*)

因为REPL没有响应。我尝试从不同的窗口启动服务器(即从终端的SBCL启动)但是它不知道我所处的上下文 - 它不理解我正在处理的包或我的任何代码。

我使用的是略微非标准的设置;我在OSX上使用Sublime Text 2和SublimeREPL和SBCL(因为我真的没有进入Emacs和ST2很棒!)。我已经描述了我如何把它放在一起updated version here - 但我真的只是为了以防万一,我会感到惊讶,如果这是我的设置导致问题,而不是我遗漏的一些基本的东西。

无论如何,我知道我可以继续在更像生产的环境中设置hunchentoot,并且已经看到一些详细说明并远程访问REPL的帖子,但我希望有更简单的东西可以搞乱我刚刚错过了。

1 个答案:

答案 0 :(得分:20)

确保您的SBCL是使用线程支持编译的。运行单线程时,Hunchentoot请求处理循环不会返回到REPL。

线程不是来自http://www.sbcl.org/的Mac OS X二进制文件中的默认设置。在Mac OS X上,我通常下载sbcl.org二进制文件以开始使用,然后下载源代码并使用{{1重建获得许多奇特的功能,包括线程。有关详细信息,请参阅源中的INSTALL文档。

相关问题