Common Lisp: Hunchentoot и REPL - Когато стартирам сървъра, получавам лог изход в REPL и не мога да използвам REPL повече

Подобно на някои от питащите тук, аз съм нов в Lisp. Преглеждам книгата Practical Common Lisp, но се отклоних, за да видя колко лесно би било за настройка на уеб приложение, така че следвах и този урок като актуализираната версия тук.

Когато стигна до точката, в която стартирам сървъра, моят REPL умира и след това не мога да насоча нищо към *dispatch-table*.

Така че основно имам код, който работи чудесно в REPL, добавяйки обекти към списък, извличайки ги и т.н., след което стартирам сървъра, използвайки

(setf *web-server* (start (make-instance 'hunchentoot:acceptor :port 8080)))

който работи чудесно и имам достъп до него на http://localhost:8080. Въпреки това, когато имам достъп до него, регистрационните файлове се отпечатват в REPL и от този момент не мога да използвам действително REPL. Така например, следвайки публикацията на Адам Петерсен, тогава не мога

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

защото REPL не реагира. Опитах да стартирам сървъра от различни прозорци (т.е. от SBCL в терминал), но след това той не осъзнава контекста, в който се намирам - не разбира пакета, върху който работя, или който и да е от моя код.

Използвам малко нестандартна настройка; Аз съм на OSX и използвам Sublime Text 2 със SublimeREPL и SBCL (защото наистина не съм в Emacs и ST2 е страхотен!). Описах как сглобих всичко тук - но всъщност публикувам това само за всеки случай, ще се изненадам, ако настройката ми създава проблеми, а не някои основни неща, които ми липсват .

Както и да е, разбирам, че мога да продължа и да настроя hunchentoot в среда, по-подобна на производствена, и видях някои публикации с подробности за това и достъп до REPL от разстояние, но се надявах, че ще има нещо по-просто, за да се забърквам с това, което аз просто пропуснах.


person mkornblum    schedule 11.07.2013    source източник


Отговори (1)


Уверете се, че вашият SBCL е компилиран с поддръжка на нишки. Когато работи с една нишка, цикълът за обработка на заявки Hunchentoot не се връща към REPL.

Threading не е настройката по подразбиране в двоичните файлове от http://www.sbcl.org/ за Mac OS X. В Mac OS X , обикновено изтеглям бинарните файлове на sbcl.org, за да започна, след това изтеглям изходния код и възстановявам с ./make.sh --fancy, за да получа редица фантастични функции, включително нишки. Вижте документа INSTALL в източниците за подробности.

person Xach    schedule 11.07.2013
comment
Благодаря Xach - ще го пробвам и ще ви кажа как се справям :) - person mkornblum; 11.07.2013
comment
Фантастично, свърши страхотна работа. Беше объркващо да го направя, защото не бях регистрирал, че ще ми трябва един SBCL, за да компилирам другия, и след това не бях стартирал инсталатора след компилатора и бях объркан в коя версия съм и т.н., но аз най-накрая го разбра. Много благодаря! - person mkornblum; 15.07.2013
comment
И така, как би се използвало версията с резба в подобна ситуация? - person MadPhysicist; 08.01.2018