ディスクからファイルを提供するか、Catalyst に移動して動的ファイルを生成するかを選択できるアプリがあります。
このようなもの(call()内):
if (-f $path){
my $app = Plack::App::File->new(file => $path)->to_app; #serve published page
$res = $app->($env);
}else{
log_debug "Fall through to app ";
$res = $self->app->($env);.
}
戻ってきたら、いくつかの Cookie を設定したいと思います。だから私は Plack::Util を使います
Plack::Util::response_cb($res, sub {
my $res = shift;
log_debug "Handling app response";
...
});
結果?最初のケース (Plack::App::File) では、すべてが期待どおりに機能します。2 番目 (通常の方法でアプリを続行) では、元に戻ることはありません。
なぜこれが起こっているのだろうか?これが私のpsgiの初期化です:
my $app = MainApp->psgi_app(@_);
$app = Plack::MyAppAbove->wrap($app);
$app = MainApp->apply_default_middlewares($app);