Open browser to web server in dev mode
This commit is contained in:
parent
2bf33a33a6
commit
424a731040
|
@ -10,3 +10,9 @@
|
|||
(or (:port options)
|
||||
(-?> (*env* "PORT") Integer.)
|
||||
(range 3000 3010)))
|
||||
|
||||
(defn open-browser?
|
||||
"True if a browser should be opened to view the web server. By default
|
||||
a browser is opened unless the LEIN_NO_DEV environment variable is set."
|
||||
[options]
|
||||
(:open-browser? options (not (*env* "LEIN_NO_DEV"))))
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
(ns ring.server.standalone
|
||||
"Functions to start a standalone Ring server."
|
||||
(:use ring.adapter.jetty
|
||||
ring.server.options))
|
||||
ring.server.options
|
||||
[clojure.java.browse :only (browse-url)]))
|
||||
|
||||
(defn- try-port
|
||||
"Try running a server under one port or a list of ports. If a list of ports
|
||||
|
@ -15,6 +16,25 @@
|
|||
(try-port port run-server)
|
||||
(throw ex))))))
|
||||
|
||||
(defn- server-port
|
||||
"Get the port the server is listening on."
|
||||
[server]
|
||||
(-> (.getConnectors server)
|
||||
(first)
|
||||
(.getPort)))
|
||||
|
||||
(defn- server-host
|
||||
"Get the host the server is bound to."
|
||||
[server]
|
||||
(-> (.getConnectors server)
|
||||
(first)
|
||||
(.getHost)
|
||||
(or "localhost")))
|
||||
|
||||
(defn- open-browser-to [server]
|
||||
(browse-url
|
||||
(str "http://" (server-host server) ":" (server-port server))))
|
||||
|
||||
(defmacro ^:private in-thread
|
||||
"Execute the body in a new thread and return the Thread object."
|
||||
[& body]
|
||||
|
@ -41,5 +61,9 @@
|
|||
(let [options (merge {:port port} options)
|
||||
server (run-jetty handler options)
|
||||
thread (add-destroy-hook server destroy)]
|
||||
(if join? (.join thread))
|
||||
(println "Started server on port" (server-port server))
|
||||
(if (open-browser? options)
|
||||
(open-browser-to server))
|
||||
(if join?
|
||||
(.join thread))
|
||||
server)))))
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
(defn test-server [& [{:as options}]]
|
||||
(let [handler (constantly (response "Hello World"))]
|
||||
(serve handler (merge {:join? false} options))))
|
||||
(serve handler (merge {:join? false, :open-browser? false} options))))
|
||||
|
||||
(defn is-server-running-on-port [port]
|
||||
(let [resp (http/get (str "http://localhost:" port)
|
||||
|
|
Reference in a new issue