我有一个应用程序可以选择从磁盘提供文件 - 或者转到 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),一切都按预期工作。在第二个(以正常方式继续使用应用程序)它永远不会回来。
我想知道为什么会这样?这是我的 psgi 初始化:
my $app = MainApp->psgi_app(@_);
$app = Plack::MyAppAbove->wrap($app);
$app = MainApp->apply_default_middlewares($app);