2013-07-11 6 views
13

ここではいくつかの質問者のように、私はLispを初めて使っています。私はPractical Common Lispの本を読んでいますが、ウェブアプリケーションを設定するのがどれほど簡単かを見て回ったので、thisチュートリアルとupdated version hereに従っています。Common Lisp:HunchentootとREPL - サーバを起動すると、REPLでログ出力が得られ、REPLをもう使用できなくなります

私はサーバを起動する時点になると、私のREPLが死ぬので、何かを*dispatch-table*にプッシュすることはできません。そこで、基本的

、私はその後、私は素晴らしい作品

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

を使用してサーバを起動し、私はそれにアクセスすることができ、コードなど、REPLで大きな作業リストにオブジェクトを追加し、それらを取得していhttp://localhost:8080。しかし、私がアクセスすると、ログはREPLに印刷され、REPLを実際に使用するにはその時点からはできません。 REPLが応答しないので、したがって、たとえば、私はその後、

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

をアダム・ピーターセンのポストをすることはできません、次の。私は別のウィンドウ(つまり端末のSBCLから)からサーバーを起動しようとしましたが、私が入っているコンテキストを認識していません - 私が作業しているパッケージや自分のコードを理解できません。

私はわずかに標準外の設定を使用しています。私はOSXでSublimeREPLとSBCLを使ってSublime Text 2を使っています(Emacsには本当にいないし、ST2は素晴らしいです!)。私はそれをすべて一緒に置く方法を説明しましたhere - しかし私は実際にそれを掲示しているだけです。私が紛失している基本的なものとは対照的に問題を引き起こしているのが私の設定だと驚くでしょう。

とにかく、より生産性の高い環境でhunchentootを設定して、それを詳述し、REPLにリモートでアクセスするのを見たことがあると私は理解していますが、私はちょうどそれを逃した。

答えて

19

SBCLがスレッドサポートでコンパイルされていることを確認してください。シングルスレッドの場合、Hunchentoot要求処理ループはREPLに戻りません。

Mac OS Xの場合、バイナリのデフォルト設定ではありません。Mac OS Xでは、通常、起動するためにsbcl.orgバイナリをダウンロードしてからソースをダウンロードし、./make.sh --fancyで再構築しますスレッドを含む派手な機能詳細については、ソースのINSTALLドキュメントを参照してください。

+0

おかげでXach - 私はそれを行って、私がどのように乗っているかを教えてあげます:) – mkornblum

+1

素晴らしい、治療を受けました。コンパイルの後にインストーラを実行していなかったため、SBCLが他のコンパイルをクロスコンパイルする必要があることを登録していなかったため、混乱していました。ついにそれを理解した。どうもありがとう! – mkornblum

+0

同様の状況でスレッド版を使用するにはどうすればいいですか? – MadPhysicist

関連する問題