首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用leiningen/ring/compojure/luminus连接REPL网络

用leiningen/ring/compojure/luminus连接REPL网络
EN

Stack Overflow用户
提问于 2015-01-16 18:00:13
回答 1查看 1.1K关注 0票数 3

我正在使用luminus web框架运行服务器,该框架使用了ring/compojure,我希望能够使用clojure repl连接到我的代码。据我所知,有一个nrepl服务器代表网络repl,您可以通过以下方式连接到它:‘protocol :connect @host:port(或者一些不同的协议,我尝试过一些东西)。

当您自动生成一个具有‘luminus project-name’的luminus项目时,将创建来自repl.clj的以下代码。

代码语言:javascript
复制
(ns sophia-site.repl
  (:require [cemerick.piggieback :as pig]
            [weasel.repl.websocket])
  (:use sophia-site.handler
        ring.server.standalone
        [ring.middleware file-info file]))

(defn browser-repl []
  (pig/cljs-repl :repl-env 
                 (weasel.repl.websocket/repl-env :ip "localhost" :port 9001)))

(defonce server (atom nil))

(defn get-handler []
  ;; #'app expands to (var app) so that when we reload our code,
  ;; the server is forced to re-resolve the symbol in the var
  ;; rather than having its own copy. When the root binding
  ;; changes, the server picks it up without having to restart.
  (-> #'app
      ; Makes static assets in $PROJECT_DIR/resources/public/ available.
      (wrap-file "resources")
      ; Content-Type, Content-Length, and Last Modified headers for files in body
      (wrap-file-info)))

(defn start-server
  "used for starting the server in development mode from REPL"
  [& [port]]
  (let [port (if port (Integer/parseInt port) 8080)]
    (reset! server
            (serve (get-handler)
                   {:port port
                    :init init
                    :auto-reload? true
                    :destroy destroy
                    :join? false}))
    (println (str "You can view the site at http://some-ip:" port))))

(defn stop-server []
  (.stop @server)
  (reset! server nil))

我和lein repl :connect ...的关系一直不成功

  1. 我能做些什么来在服务器上的代码上附加一个clojure repl呢?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-16 18:24:30

在您的项目根中,您应该运行lein repl,一旦连接,您可以在repl提示符下输入(start-server)

您的服务器和浏览器选项卡将被启动,您调用(start-server的repl提示符可以用于与正在运行的应用程序进行交互。

为了防止浏览器选项卡启动,需要将:open-browser? false添加到传递给serve的repl.clj选项图中:

代码语言:javascript
复制
(serve (get-handler)
       {:port port
        :init init
        :auto-reload? true
        :destroy destroy
        :open-browser? false
        :join? false})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27989997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档