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

パルカワ2

PerlとRubyとイチャラブ

Maltsの$cについて。

Maltsは、$cに様々なメソッドを生やす事が出来ます。ArkでもCatalystでもAmon2でもやり方は違えど同じような事が出来ます。(たぶん)

Maltsでの$cは、"一時的なデータを保存する格納庫"です。
一時的なデータとは、リクエスト毎に変わるデータ(requestなど)のことです。

また、$cに生えてるメソッドは "その保存されてる一時的なデータを使用(保存、変更など)するメソッド"($c->create_request()など) または "保存されてるデータを吐き出すメソッド"($c->request()など) のどちらかです。例外として$c->encoding()と$c->app_dir()は、$cにデータが保存されていません。

この$cには、ロジックが書かれたメソッドなどを生やす事は可能ですが、さっきの二種類のメソッド以外を生やすとテストもしにくく将来的に絶望するのでオススメはしません。

$cはメソッドを生やしまくれるので非常に便利ですが、$cにロジックが書かれたメソッドを生やすのはテストがしにくくてうざいのでやめた方がいいのでは、という話でした。

 

* encodingはデフォルトだと一時的なデータではないので$cに保存はしない。しかし携帯に対応する場合など一時的なデータとして$cに保存したい場合もある。そういった場合はencodingを上書きするので$cに生やす。

* app_dirは作成するのに$cを使っているので$cに生やすが、一時的なデータではないため$cに保存はしない。