这是我的 core.clj 文件
(ns lein-app.core
(:require [compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.reload :refer [wrap-reload]]))
(use 'ring.adapter.jetty)
(defroutes app
(GET "/" [] "<h1>Hello world</h1>")
(route/not-found "<h1>Not found</h1>"))
(def reloadable-app
(wrap-reload app))
(defn -main
[]
(run-jetty reloadable-app {:port 3000}))
Run Code Online (Sandbox Code Playgroud)
这是我的 project.clj
(defproject lein-app "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [
[org.clojure/clojure "1.8.0"]
[compojure "1.5.2"]
[ring "1.5.0"]]
:main lein-app.core)
Run Code Online (Sandbox Code Playgroud)
当我运行 lein run 时,它会正确启动服务器,但是如果我将 GET 响应更改为其他任何内容,例如我需要终止服务器并重新启动它。
正如环问题#104中所示,该文档不太清楚。
对于wrap-reload(以及其他库/项目中的类似功能),必须传递 var 本身而不是值。
像这样
(wrap-reload #'app)
Run Code Online (Sandbox Code Playgroud)