unfiltered-scalateをtomcatで動かす

結論

  • くじけそう
  • オススメできない

設定

動いたは動いた。
でもデフォルトだとダメです。

https://github.com/unfiltered/unfiltered-scalate/blob/0.5.3/src/main/scala/scalate.scala#L45-46

ここを変えたやつをimplicitに渡してあげます。

implicit val defaultTemplateDirs = new File(getClass.getResource("/templates").getPath) :: Nil

問題

unfilteredで使っているのはRenderContext、
https://github.com/unfiltered/unfiltered-scalate/blob/0.5.3/src/main/scala/scalate.scala#L42-43


でも自分が使いたかったのはServletRenderContext。
例えばビューからお手軽にServletContextの情報を取得するとかがServletRenderContextならできるけどRenderContextだとできない。


同じことを指摘してる人を見つけたのだけど、
「unfiltered別にそういうの目指してませんし」的スタンスでかわされちゃってる。


どうしても使いたければ勝手に自分で拡張するなり、自分でモジュール書けばっていうことになります。(どうしても使いたくなるのがUnfiltered。)
例えばServletRenderContextを使いたければ、unfiltered-scalate-servletを作るとかね.

忘れてはいけない

Unfiltered は Web Application Framework ではなく、HTTP Tool Kit なのさ。

おまけ情報

tomcatでcontext pathを除外してマッチさせたい、みたいなときはContextPathっていうExtractorがあるのでそれ使うとできます。

おまけ情報2

来週の #akskscala はunfilteredハンズオン + 言語仕様読書会その5です
http://atnd.org/events/25255