Play FrameworkでScala + Scalateを使う場合、
Scalate用にいろいろと準備が必要なみたいです。
基本的には
"Play framework - scalate"
http://www.playframework.org/modules/scalate-0.7.2/home
の通りなんですがどうにも言葉足らずのような。。
まず必要なモジュールをインストール
% sudo play install scala % sudo play install scalate
scalateは最新(2010/11/08)だと0.8がインストールされます。
その後プロジェクト作成ですが上記ページの通り
play new "好きなプロジェクト名" --with scala,scalate
すると作成されますが、
このままではindex.sspが読み込まれず
play runしてもindex.htmlが無いとエラーが出てしまいます。
そこで上記ページや
"Play framework の Tutorial を Scala と Scalate で行う(Step1, Step2) - cooldaemonの備忘録"
http://d.hatena.ne.jp/cooldaemon/20100905/1283680173#20100905fn1
を参考にさせていただくと
app以下のcontrollers.scalaを
object Application extends Controller {
から
object Application extends ScalateController {
に変更するとありましたので修正します。
が、これだけだと当然動きません。
Applicationオブジェクトの中でindexを
def index = Template
しているからです。
"Play framework - scalate"では
def index(name: String = "Guest user") = render(name)
と修正していますが、
とりあえずは画面に値を渡さずに
def index = render()
としてやると動くようになります。
これはちゃんとチュートリアル
"Play framework - Starting up the project (Scala version)"
http://www.playframework.org/documentation/1.1/scguide1
「Running the application」に書いてありましたね。
まとめると新規プロジェクトの場合
- extendsするのをScalateControllerに修正
- Templateではなくrender()を呼ぶ
の2点を修正してやればよいようです。