[英]Ring with reload-wrap in Emacs Cider REPL
通過重載包裝從Emacs Cider REPL內部啟動Ring服務器時,REPL會阻塞。 為了在開發過程中具有此代碼重新加載功能並能夠同時與Cider REPL一起工作,我該怎么辦。
另外,通過按Cc CC從REPL中取消正在運行的服務器“進程”后,我無法在同一端口上重新啟動它,出現“地址已在使用”錯誤。
我知道使用Stuart Sierra的組件系統可以做到這一點。 這是唯一的方法嗎,或者也許有一個更簡單的解決方案?
當您啟動環形服務器(我猜想使用碼頭)時,您並不是在告訴它不要將當前線程加入正在運行的服務器中。 您需要添加join?
選項設置為false
:
(run-jetty my-handler {:join? false})
您還應該綁定此表達式的返回值(即服務器實例),以便稍后可以停止它:
(def my-server (run-jetty my-handler {:join? false}))
;; some time later
(.stop my-server)
停止服務器將關閉服務器套接字,並使其可用於將來的服務器實例。
Simplier解決方案,用於在dev / user.clj中的某處存儲與組件相同的Web服務器浪費。 並配置cider-refresh-fn
變量以啟動和停止Web服務器。 實際上,想法與組件方法相同,但是您不必使用它,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.