前回、DB接続、テンプレート利用まで書いたんですが、静的ファイルを配信する仕組みがまだなかったので、調べてみると下記が簡単でした。
Clojureの入門がてら、Herokuに自分のプロフィールサイトを作ってみる そのいち – 蟲!虫!蟲! – #!/usr/bin/bugrammer
静的ファイルの配置場所
project.cljに「web-content」という項目を追加し、静的コンテンツのディレクトリがどこかを指定します。今回の場合は、プロジェクトディレクトリ直下のpublicディレクトリに配置するものとします。
(defproject compojureexample "1.0.0-SNAPSHOT" :description "Compojure Example" :dependencies [[org.clojure/clojure "1.2.0"] [org.clojure/clojure-contrib "1.2.0"] [compojure "0.6.5"] [ring/ring-jetty-adapter "0.3.9"]] ;; 静的コンテンツの配置ディレクトリ :web-content "public") |
ルーティング
次に、静的ファイルを配信するためにルーティングの設定を行います。
今回は、public直下に配置したファイルを、URLとしては、static以下がpublic直下を参照する感じで、「https://localhost:8080/static/***」のようにアクセスさせたいと思います。
src/compojureexample/core.clj
(ns compojureexample.core (:use compojure.core compojure.response ring.adapter.jetty) (:require [compojure.route :as route])) ;; ============================================= ;; Routes ;; ============================================= (defroutes app (GET "/" _ "Hello World") ;; https://localhost:8080/***としてアクセスさせたい場合は、「/」だけでよい。 (route/files "/static/")) ;; ============================================= ;; Run Server ;; ============================================= (defn -main [] (let [port (Integer/parseInt (get (System/getenv) "PORT" "8080"))] (run-jetty app {:port port}))) |
以上となります。