2015-05-24 41 views
9

SBCL Common Lisp ile oynamaya başladım ve Hunchentoot'u kullanarak küçük bir web uygulaması geliştirmek istiyorum. Kolay dağıtım için, sb-ext kullanarak her şeyi bir ikili olarak kaydetmeyi planladım: büyük çıktı boyutuyla yaşayabildiğim gibi kaydet-lisp-ve-die.SBCL: Hunchentoot uygulamasını çalıştırılabilir olarak çalıştırılıyor

Yürütücü için bir üst düzey işlev sağlamanız gerekir. Sorun, üst düzey işlevi döndüğünde programın çıkmasıdır. Hunchentoot'u çalıştırılabilir programdan başlatmaya çalıştım ama program iki saniye sonra sona erdi.

Programı durdurmadan önce Hunchentoot'un kapatılması (istek içinden) nasıl bekleyebilirim? Hunchentoot alıcı iş parçacığına katılmak gibi bir şey yapabilir miyim? Ya da canlı hata ayıklama yapabilmek için REPL'yi yürütülebilir dosyaya ekleyebilir miyim?

+0

Uygulamanızı nasıl dağıtacağınızı hiç düşündünüz mü? Şimdi aynı pozisyondayım. Hızlı bir uygulama yazdım ve dağıtmak istiyorum. Hangi araçları kullandınız? – MadPhysicist

+1

@MadPhysicist Bunu [lisp-journey/web-dev # deployment] (https://lisp-journey.gitlab.io/web-dev/#deployment) adresinden not alıyorum. Henüz bir sbcl hatası nedeniyle uygulamanızı çalıştıramadığımdan emin değilim. – Ehvince

+0

@Ehvince harika! Gözümü üzerinde tutacağım. Bu arada, Lisp yolculuğunuzda yararlı bulduğunuz Lisp kaynaklarının bir listesini almak isterim. Kitaplar, çevrimiçi makaleler vb. Için öneriler – MadPhysicist

cevap

3
(ql:quickload :hunchentoot) 
(use-package :hunchentoot) 

(defun main() 
    (hunchentoot:start-server :port 8082) 
    (sb-thread:join-thread (find-if 
          (lambda (th) 
          (string= (sb-thread:thread-name th) "hunchentoot-listener-1")) 
          (sb-thread:list-all-threads)))) 

hiçbir açık kod (belki GNU Screen ile) bir terminal açık tutmak eğer bir repl erişiminizi sağlamak gereklidir. Hata ayıklayıcısını kırmak için Ctrl + C'yi terminale gönderin.

+0

Daha yeni bir Hunchentoot sürümü ile çalışıyorum gibi görünüyor. Kullanmak zorundaydım (hunchentoot: start (make-instance 'hunchentoot: kolay alıcı: port 8080) ve iş parçacığı "hunchentoot-dinleyici - *: 8080" olarak adlandırıldı. Bir çekicilik gibi çalışır. – Sojaki

+1

nasıl -eğer \t (lamda (th) \t ("hunchentoot-dinleyici" (sb iplik arama: inci iplik adı))) \t (sb iplik: liste-her konu) için) '' '' '' bul-if''' –