就像这里的一些提问者一样,我是Lisp的新手。我正在浏览Practical Common Lisp这本书,但为了了解设置web应用程序有多容易,我跳过了一步,所以我一直在学习this教程,以及updated version here。
当我启动服务器时,我的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 Text2以及SublimeREPL和SBCL (因为我真的不喜欢Emacs,而ST2很棒!)。我已经描述了我是如何把所有这些放在一起的,here --但我只是为了以防万一,如果是我的设置造成了问题,而不是我遗漏了一些基本的东西,我会感到惊讶的。
无论如何,我知道我可以继续在一个更像生产的环境中设置hunchentoot,并且已经看到一些文章详细介绍了这一点并远程访问REPL,但我希望有一些更简单的方法来处理我刚刚错过的事情。
发布于 2013-07-11 22:50:39
确保您的SBCL是使用线程支持进行编译的。当运行单线程时,Hunchentoot请求处理循环不会返回到REPL。
在Mac上,我通常从http://www.sbcl.org/下载sbcl.org二进制文件开始,然后下载源代码并使用./make.sh --fancy重新构建,以获得许多奇特的功能,包括线程。有关详细信息,请参阅源代码中的安装文档。
https://stackoverflow.com/questions/17594533
复制相似问题