Skip to content

Commit

Permalink
Ensure static file directories exist
Browse files Browse the repository at this point in the history
  • Loading branch information
weavejester committed Nov 17, 2024
1 parent 48d8872 commit f95fa73
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
8 changes: 7 additions & 1 deletion src/duct/middleware/web.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns duct.middleware.web
(:require [duct.logger :as logger]
(:require [clojure.java.io :as io]
[duct.logger :as logger]
[integrant.core :as ig]
[ring.middleware.defaults :refer [wrap-defaults]]
[ring.middleware.stacktrace :refer [wrap-stacktrace]]
Expand Down Expand Up @@ -74,7 +75,12 @@
(defmethod ig/init-key ::hide-errors [_ {:keys [error-handler]}]
#(wrap-hide-errors % error-handler))

(defn- ensure-dirs-exist [dirs]
(doseq [dir dirs :let [f (io/file dir)] :when (not (.exists f))]
(.mkdirs f)))

(defmethod ig/init-key ::defaults [_ defaults]
(ensure-dirs-exist (-> defaults :static :files))
#(wrap-defaults % defaults))

(defmethod ig/init-key ::webjars [_ {:keys [path] :or {path "/assets"}}]
Expand Down
13 changes: 12 additions & 1 deletion test/duct/middleware/web_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
[duct.logger :as logger]
[duct.middleware.web :refer :all]
[integrant.core :as ig]
[ring.mock.request :as mock]))
[ring.mock.request :as mock])
(:import [java.nio.file Files]
[java.nio.file.attribute FileAttribute]))

(defrecord TestLogger [logs]
logger/Logger
Expand Down Expand Up @@ -80,3 +82,12 @@
(handler (mock/request :get "/") respond raise)
(is (not (realized? raise)))
(is (= @respond response))))))

(deftest test-wrap-defaults
(let [attrs (make-array FileAttribute 0)
tempdir (Files/createTempDirectory "duct" attrs)]
(Files/delete tempdir)
(ig/init-key :duct.middleware.web/defaults
{:static {:files [(str tempdir)]}})
(is (.exists (.toFile tempdir)))
(Files/deleteIfExists tempdir)))

0 comments on commit f95fa73

Please sign in to comment.