どのように機能するかを学ぶために、テスト clojure/ring プロジェクトを構築しています。「junkapp」と呼ぶアプリを作成しましたが、実際には1つのハンドラーがあります
(defn handler [request]
{:status 200
:headers {"Content-type" "text/html"}
:body "Hello World"})
また、静的コンテンツ用の wrap-resource への 1 回の呼び出し
(def app
(wrap-resource handler "public"))
したがって、私の project.clj には lein-ring への参照があり、:handler をjunkapp.core/app に設定しています。
:plugins [[lein-ring "0.8.5"]]
:ring {:handler junkapp.core/app}
これを lein run で実行すると、すべてが期待どおりに機能します。/ を呼び出すと「Hello World」が返され、/test.html を呼び出すと resources/public/test.html の内容が返されます。
しかし、それをwarファイルにビルドしようとしました
lein ring uberwar junkapp.war
tomcat7 サーバーの webapps/ ディレクトリの下に配置します。現在、junkapp (/junkapp/、/junkapp/foo、/junkapp/test.html) の下のパスに移動すると、常に「Hello World」が返され、静的コンテンツをまったく参照できないようです。グーグルでは、人々が compojure.route/resources を使用するように言っているのを見ていますが、私が学んでいるように、このように機能し、後でライブラリを追加したいと考えています。何が起きてる?