Catalystのバージョンを上げたら文句言われた。
Catalystのバージョンを5.71にしたらこんなメッセージが出るようになりました。
[warn] Used regexp fallback for $c->model('View::TT'), which found 'MyApp::Web::View::TT=HASH(0x21d44d0)'. Relying on regexp fallback behavior for component resolution is unreliable and unsafe. You probably meant $c->model('MyApp::Web::View::TT=HASH(0x21d44d0)') instead of $c->model{'View::TT'}, but if you really wanted to search, pass in a regexp as the argument like so: $c->model(qr/View::TT/)
Changesを見たところ、5.7099系で曖昧なコンポーネント指定で警告が出るようになったようです。
5.7099_01 2008-06-25 22:36:00 - Refactored component resolution (component(), models(), model(), et al). We now throw warnings for two reasons: 1) model() or view() was called with no arguments, and two results are returned -- set default_(model|view), current_(model|view) or current_(model|view)_instance instead 2) you call a component resolution method with a string, and it resorts to a regexp fallback wherein a result is returned -- if you really want to search, call the method with a regex as the argument
簡単にまとめるとこんな感じでしょうか。
default_(model|view)が欲しいのか? current_(model|view)が欲しいのか? current_(model|view)_instanceが欲しいのか? はっきりしろ。 あと、欲しいコンポーネントが分かっているなら<del>フルネーム</del>で書け。 本当に探したいというのなら、文字列ではなく正規表現オブジェクトを書いて態度を示せ。
『フルネーム』とかどこにも書いてない(><)そうじゃなくて、MyApp::(?:Model|View)::(.*)の$1部分だけを書かないとwarningが出るみたいです。