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