読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

lein ring serverでauto-refresh?をtrueにしたのに更新されない場合

clojure

project.cljでauto-refresh?をtrueにしてるのに、lein ring serverで起動してresource内のindex.htmlを更新しても、更新されなかった。

表示されたindex.htmlの中身を見ると、auto-refresh用のjavascriptが追加されてなかった。調べると、Content-typeが正しく設定されてないか、headタグが無いか、らしい。

なのでこのように書いてたハンドラを

(compojure/defroutes app
  (compojure/GET "/" request (response/resource-response "public/index.html"))
  (route/resources "/"))

以下のように書き換えたら、無事更新された

(compojure/defroutes app
  (compojure/GET "/" request
                 (-> "public/index.html" 
                     (response/resource-response) 
                     (response/content-type "text/html")
                     (response/charset "utf-8")))
  (route/resources "/"))

charsetを設定しないと、html内でcharsetを設定しても文字化けしてしまう。

ちゃんと設定すると、head直下にscriptタグが生成されていた。

広告を非表示にする