From 2dd1cf10385bab8a0796e247b4f2e856da867e2f Mon Sep 17 00:00:00 2001 From: James Reeves Date: Wed, 8 Feb 2012 21:33:10 +0000 Subject: [PATCH] Added ring.util.environment and PORT var --- src/ring/server/standalone.clj | 11 +++++++---- src/ring/util/environment.clj | 11 +++++++++++ test/ring/server/test/standalone.clj | 12 +++++++----- 3 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 src/ring/util/environment.clj diff --git a/src/ring/server/standalone.clj b/src/ring/server/standalone.clj index 65c6cad..0929193 100644 --- a/src/ring/server/standalone.clj +++ b/src/ring/server/standalone.clj @@ -1,9 +1,12 @@ (ns ring.server.standalone - (:use [ring.adapter.jetty :only (run-jetty)])) + "Functions to start a standalone Ring server." + (:use ring.adapter.jetty + ring.util.environment)) (defn serve "Start a web server to run a handler." [handler & [{:as options}]] - (run-jetty - handler - (merge {:port 5000} options))) + (let [port (Integer. (*env* "PORT" "5000"))] + (run-jetty + handler + (merge {:port port} options)))) diff --git a/src/ring/util/environment.clj b/src/ring/util/environment.clj new file mode 100644 index 0000000..dd4ea17 --- /dev/null +++ b/src/ring/util/environment.clj @@ -0,0 +1,11 @@ +(ns ring.util.environment + "A namespace managing and reading environment variables.") + +(def ^{:dynamic true, :doc "A map of environment variables."} + *env* (into {} (System/getenv))) + +(defmacro with-env + "Merges the supplied map of environment variable into *env*." + [env-map & body] + `(binding [*env* (merge *env* ~env-map)] + ~@body)) diff --git a/test/ring/server/test/standalone.clj b/test/ring/server/test/standalone.clj index 737a4cd..7815d6a 100644 --- a/test/ring/server/test/standalone.clj +++ b/test/ring/server/test/standalone.clj @@ -2,6 +2,7 @@ (:require [clj-http.client :as http]) (:use clojure.test ring.server.standalone + ring.util.environment ring.util.response)) (defmacro with-server [server & body] @@ -11,8 +12,9 @@ (finally (.stop server#))))) (deftest serve-test - (let [handler (constantly (response "Hello World"))] - (with-server (serve handler {:join? false}) - (let [resp (http/get "http://localhost:5000")] - (is (= (:status resp) 200)) - (is (= (:body resp) "Hello World")))))) + (with-env {"PORT" "4563"} + (let [handler (constantly (response "Hello World"))] + (with-server (serve handler {:join? false}) + (let [resp (http/get "http://localhost:4563")] + (is (= (:status resp) 200)) + (is (= (:body resp) "Hello World")))))))