Ring/リクエストのたびにリロード

ring.middleware.reloadを使うと、リクエストの度に特定のネームスペースのリロードを行ってくれるようです。インタラクティブに開発を行うには、とっても便利そうです。

ハンドラを、wrap-reloadでくるみ、helloweb.coreがリロードされるようにします。

(ns helloweb.core (:gen-class)
  (:use compojure.core,
        ring.adapter.jetty,
        ring.middleware.file,
        ring.middleware.reload, ;ここを追加
        hiccup.core, hiccup.page-helpers,  hiccup.form-helpers)
  (:require [compojure.route :as route]))

;---------------------中略------------------------
(def app
  (wrap-reload
    (wrap-file my-routes ".")
    '(helloweb.core)))

試しに、ルートを追加してブラウザからリクエストを投げてみると、1回目のリクエストではリロードが完了しないのか Page Not Found になります。2回目からは正常にページが返ってくるようになりました。