リクエストで:server-nameが返す内容に基づいて、特定のテンプレートを読み込もうとしています。
(ns rosay.views.common
(:use noir.core)
(:require [noir.request :as req]
[clojure.string :as string]
[net.cgrand.enlive-html :as html]))
(defn get-server-name
"Pulls servername for template definition"
[]
(or (:server-name (req/ring-request)) "localhost"))
(defn get-template
"Grabs template name for current server"
[tmpl]
(string/join "" (concat [(get-server-name) tmpl])))
(html/deftemplate base (get-template "/base.html")
[]
[:p] (html/content (get-template "/base.html")))
/home/usr/rosay/resources/localhost/base.htmlを返すローカルホストで機能しますが、別のホストに対して「hostname2」とテストすると、get-templateが/ home / usr / rosay/resourcesを参照している場所がわかります。 /hostname2/base.htmlですが、ブラウザでレンダリングすると、常に../resources/localhost/base.htmlを指します。
このユースケースを処理するためのマクロまたは別の方法はありますか?