rename to ring-custom-jetty-server. update README.md
This commit is contained in:
parent
5912e2819e
commit
e54717be4a
87
README.md
87
README.md
|
@ -1,84 +1,25 @@
|
||||||
# Ring-Server
|
# Ring-Custom-Jetty-Server
|
||||||
|
|
||||||
A library for starting a web server to serve a [Ring][1] handler with
|
Fork of the [ring-server][1] library.
|
||||||
sensible default options and environment variable overrides.
|
|
||||||
|
|
||||||
[1]: https://github.com/ring-clojure/ring
|
This library changes the `ring.server.standalone/serve` function,
|
||||||
|
requiring that a function that will start an HTTP server be passed
|
||||||
|
in via the `:run-server-fn` option. In every other respect, this
|
||||||
|
library should function exactly the same as [ring-server][1].
|
||||||
|
|
||||||
## Features
|
This function should have the same basic signature and return type
|
||||||
|
as the normal `ring.adapter.jetty/run-jetty` function used by the
|
||||||
|
[ring-server][1] library.
|
||||||
|
|
||||||
When starting in development mode (i.e. `LEIN_NO_DEV` is not set):
|
The main intended use of this library is to allow easy switching
|
||||||
|
to use an async Jetty server instead.
|
||||||
|
|
||||||
* The server finds a free port to start on
|
[1]: https://github.com/weavejester/ring-server
|
||||||
* It automatically reloads changed files
|
|
||||||
* It renders exceptions and their stacktraces in HTML
|
|
||||||
* A web browser is automatically opened to the started server
|
|
||||||
|
|
||||||
In production:
|
|
||||||
|
|
||||||
* You can specify the port via the `PORT` environment variable
|
|
||||||
* You can add hooks to run on startup and shutdown.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Add the following dependency to your `project.clj` file:
|
|
||||||
|
|
||||||
[ring-server "0.3.1"]
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Simple usage:
|
|
||||||
|
|
||||||
```clojure
|
|
||||||
(use 'ring.server.standalone)
|
|
||||||
(serve your-handler)
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also specify a map of options:
|
|
||||||
|
|
||||||
```clojure
|
|
||||||
(serve your-handler {:port 4040})
|
|
||||||
```
|
|
||||||
|
|
||||||
The following options are supported:
|
|
||||||
|
|
||||||
* `:port` - The port to start the server on, overrides `$PORT`
|
|
||||||
|
|
||||||
* `:join?` - Whether to wait until the server stops (default true)
|
|
||||||
|
|
||||||
* `:init` - A function executed when the server starts
|
|
||||||
|
|
||||||
* `:destroy` - A function executed when the server stops
|
|
||||||
|
|
||||||
* `:open-browser?` -
|
|
||||||
True if you want a browser to be opened to the server. Defaults to
|
|
||||||
true in development mode, false in production mode.
|
|
||||||
|
|
||||||
* `:browser-uri` -
|
|
||||||
A path to append to the target URL if opening a browser (default
|
|
||||||
none). The full URI will be constructed like:
|
|
||||||
`http://{host}:{port}{browser-uri}`
|
|
||||||
|
|
||||||
* `:stacktraces?` -
|
|
||||||
True if you want a stacktrace to be displayed in the browser when
|
|
||||||
an exception is raised. Default to true in development, false in
|
|
||||||
production.
|
|
||||||
|
|
||||||
* `:auto-reload?` -
|
|
||||||
True if you want your source files to be automatically reloaded
|
|
||||||
when they are modified. Defaults to true in development, false in
|
|
||||||
production.
|
|
||||||
|
|
||||||
* `:reload-paths` -
|
|
||||||
A seq of source paths to reload. Defaults to [\"src\"].
|
|
||||||
Only relevant if :auto-reload? is true.
|
|
||||||
|
|
||||||
* `:auto-refresh?` -
|
|
||||||
True if you want your browser to automatically refresh when source
|
|
||||||
files are changed. Defaults to false.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright © 2013 James Reeves
|
Copyright © 2013 James Reeves
|
||||||
|
|
||||||
|
Copyright © 2014 Gered King
|
||||||
|
|
||||||
Distributed under the Eclipse Public License, the same as Clojure.
|
Distributed under the Eclipse Public License, the same as Clojure.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(defproject ring-server "0.3.1"
|
(defproject ring-custom-jetty-server "0.1.0"
|
||||||
:description "Library for running Ring web servers"
|
:description "Library for running Ring web servers"
|
||||||
:url "https://github.com/weavejester/ring-server"
|
:url "https://github.com/gered/ring-custom-jetty-server"
|
||||||
:license {:name "Eclipse Public License"
|
:license {:name "Eclipse Public License"
|
||||||
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
||||||
:dependencies [[org.clojure/clojure "1.2.1"]
|
:dependencies [[org.clojure/clojure "1.2.1"]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ring.server.leiningen
|
(ns ring-custom-jetty.server.leiningen
|
||||||
"Functions to start a server from a Leiningen plugin."
|
"Functions to start a server from a Leiningen plugin."
|
||||||
(:require [ring.server.standalone :as standalone]))
|
(:require [ring-custom-jetty.server.standalone :as standalone]))
|
||||||
|
|
||||||
(defn- load-var [sym]
|
(defn- load-var [sym]
|
||||||
(when sym
|
(when sym
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ring.server.options
|
(ns ring-custom-jetty.server.options
|
||||||
"Functions to retrieve options and settings with sensible defaults"
|
"Functions to retrieve options and settings with sensible defaults"
|
||||||
(:use ring.util.environment
|
(:use ring-custom-jetty.util.environment
|
||||||
[clojure.core.incubator :only (-?>)])
|
[clojure.core.incubator :only (-?>)])
|
||||||
(:require [clojure.string :as str]))
|
(:require [clojure.string :as str]))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ring.server.standalone
|
(ns ring-custom-jetty.server.standalone
|
||||||
"Functions to start a standalone Ring server."
|
"Functions to start a standalone Ring server."
|
||||||
(:use ring.server.options
|
(:use ring-custom-jetty.server.options
|
||||||
ring.middleware.stacktrace
|
ring.middleware.stacktrace
|
||||||
ring.middleware.reload
|
ring.middleware.reload
|
||||||
ring.middleware.refresh
|
ring.middleware.refresh
|
|
@ -1,4 +1,4 @@
|
||||||
(ns ring.util.environment
|
(ns ring-custom-jetty.util.environment
|
||||||
"A namespace managing and reading environment variables.")
|
"A namespace managing and reading environment variables.")
|
||||||
|
|
||||||
(def ^{:dynamic true, :doc "A map of environment variables."}
|
(def ^{:dynamic true, :doc "A map of environment variables."}
|
|
@ -1,7 +1,7 @@
|
||||||
(ns ring.server.test.leiningen
|
(ns ring.server.test.leiningen
|
||||||
(:use clojure.test
|
(:use clojure.test
|
||||||
ring.server.leiningen
|
ring-custom-jetty.server.leiningen
|
||||||
ring.server.test.utils))
|
ring-custom-jetty.server.test.utils))
|
||||||
|
|
||||||
(def basic-project-clj
|
(def basic-project-clj
|
||||||
`{:ring {:handler default-handler
|
`{:ring {:handler default-handler
|
|
@ -1,16 +1,17 @@
|
||||||
(ns ring.server.test.standalone
|
(ns ring-custom-jetty.server.test.standalone
|
||||||
(:use clojure.test
|
(:use clojure.test
|
||||||
ring.server.standalone
|
ring-custom-jetty.server.standalone
|
||||||
ring.server.test.utils
|
ring-custom-jetty.server.test.utils
|
||||||
ring.util.environment
|
ring.util.environment
|
||||||
ring.util.response))
|
ring.util.response
|
||||||
|
ring.adapter.jetty))
|
||||||
|
|
||||||
(defn exception-handler [req]
|
(defn exception-handler [req]
|
||||||
(throw (Exception. "testing")))
|
(throw (Exception. "testing")))
|
||||||
|
|
||||||
(defn test-server [& [{:as options}]]
|
(defn test-server [& [{:as options}]]
|
||||||
(let [handler (:handler options default-handler)]
|
(let [handler (:handler options default-handler)]
|
||||||
(serve handler (merge {:join? false, :open-browser? false} options))))
|
(serve handler (merge {:join? false, :open-browser? false :run-server-fn run-jetty} options))))
|
||||||
|
|
||||||
(deftest serve-test
|
(deftest serve-test
|
||||||
(testing "default port"
|
(testing "default port"
|
|
@ -1,4 +1,4 @@
|
||||||
(ns ring.server.test.utils
|
(ns ring-custom-jetty.server.test.utils
|
||||||
"Utility functions for running unit tests"
|
"Utility functions for running unit tests"
|
||||||
(:require [clj-http.client :as http])
|
(:require [clj-http.client :as http])
|
||||||
(:use clojure.test
|
(:use clojure.test
|
Reference in a new issue