->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