仕事でPlayフレームワークを使っている。これまで自分が使ったことがあるフレームワークは
- sinatra
- scalatra
- compojure(clojure)
- ridge(社内のPerlのフレームワーク)
などでごつい(?)フレームワークを使ったことがなかったため、慣れるのに苦戦していた。分からなかったらググればいいかと思っていたけれど、色々分からないところも多かったため、ちょっと本を読んで全体像を掴もうとしたのでメモ。厚い本は読む前に力尽きるなと思ったので、以下の軽めの本を読んだ。
- 作者: 中村修太
- 出版社/メーカー: 中村 修太
- 発売日: 2014/06/21
- メディア: Kindle版
- この商品を含むブログを見る
コントローラー周り
routes
ファイルにエンドポイントとコントローラーのメソッドをの関係を書く- Reverse routingというのを使うと逆の関係も取れるので、リンクを書くときにエンドポイントを直書きしなくてもよい
- コントローラーの実際の処理は
play.api.mvc.Action
が大体行なう- 例えば
play.api.mvc.Request
を受け取ってplay.api.mvc.Result
(Ok関数とかSimpleResult関数)とか
- 例えば
- セッションの扱い方
参考
ビュー周り
- templateだけど型があるのでちょっと安心
- 基本的な処理の流れ
- Actionの実行
- データをテンプレートへ渡す
- テンプレートオブジェクトが作成される
- HTMLがクライアントに返される
- テンプレートの書き方は普通な感じ
- includeもできる
play.api.data.Form
を使うとformとobjectのbindが簡単にできる- オブジェクト側でapply/unapplyを用意する
- mapping関数は複雑なvalidationをさせることもできる
参考
モデル周り
- playはRDBMSのスキーマの変更をトラッキングしてくれる機能を持っている
- Evolutionsスクリプト
- [感想]便利だけど、勝手にやられるの嫌な感じもする...
- conf/evolutions/defaultディレクトリにスクリプトを保存。連番で付けていく
- こんな感じで書く
# --- !Ups create table foo ( id int(10) not null auto_increment, name varchar(100), primary key(id)); alter table bar add newColumn varchar(10); # --- !Downs drop table foo; alter table bar drop newColumn;
# --- !Ups
はスキーマの変更内容を記述# --- !Downs
は、Ups部分の変更を元に戻すための内容- http://localhost:9000にアクセスして、webからボタンをポチポチしていくとSQLが実行されていく...