Catalyst::Plugin::Cache から抜粋。
->setup
->NEXT::setup
->setup_cache_backends
->NEXT::setup_cache_backends
->setup_generic_cache_backend
if ( $class = delete $config{'class'} ) {
->setup_cache_backend_by_class
->register_cache_backend
}
elsif ( $store = delete $config{'store'}
|| $app->default_cache_store ) {
->setup_${store}_cache_backends
->register_cache_backend
\}
大体こんな感じ。
Cache に使える object は->can('get')
、->can('set')
、->can('remove')
がすべて真になるオブジェクト。
あと->setup_cache_backend_by_class
は指定したクラスのインスタンスを作るんだけど、->setup_generic_cache_backend
からsetup_cache_backend_by_class
呼び出すことろで hash reference を渡してるっぽいので、設定ファイルで指定できるクラスはコンストラクタの引数に hash reference が指定できるものに限られてくる。まあこのあたり書き換えちゃえばなんとかなるだろうけど。
にしても Catalyst::Plugin::Cache のコードは読みづらいw
#FIXME