Open browser to web server in dev mode
This commit is contained in:
parent
2bf33a33a6
commit
424a731040
|
@ -10,3 +10,9 @@
|
||||||
(or (:port options)
|
(or (:port options)
|
||||||
(-?> (*env* "PORT") Integer.)
|
(-?> (*env* "PORT") Integer.)
|
||||||
(range 3000 3010)))
|
(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
|
(ns ring.server.standalone
|
||||||
"Functions to start a standalone Ring server."
|
"Functions to start a standalone Ring server."
|
||||||
(:use ring.adapter.jetty
|
(:use ring.adapter.jetty
|
||||||
ring.server.options))
|
ring.server.options
|
||||||
|
[clojure.java.browse :only (browse-url)]))
|
||||||
|
|
||||||
(defn- try-port
|
(defn- try-port
|
||||||
"Try running a server under one port or a list of ports. If a list of ports
|
"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)
|
(try-port port run-server)
|
||||||
(throw ex))))))
|
(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
|
(defmacro ^:private in-thread
|
||||||
"Execute the body in a new thread and return the Thread object."
|
"Execute the body in a new thread and return the Thread object."
|
||||||
[& body]
|
[& body]
|
||||||
|
@ -41,5 +61,9 @@
|
||||||
(let [options (merge {:port port} options)
|
(let [options (merge {:port port} options)
|
||||||
server (run-jetty handler options)
|
server (run-jetty handler options)
|
||||||
thread (add-destroy-hook server destroy)]
|
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)))))
|
server)))))
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
(defn test-server [& [{:as options}]]
|
(defn test-server [& [{:as options}]]
|
||||||
(let [handler (constantly (response "Hello World"))]
|
(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]
|
(defn is-server-running-on-port [port]
|
||||||
(let [resp (http/get (str "http://localhost:" port)
|
(let [resp (http/get (str "http://localhost:" port)
|
||||||
|
|
Reference in a new issue