gpt4 book ai didi

perl - 如何在 Catalyst 的请求结束时进行清理?

转载 作者:行者123 更新时间:2023-12-02 07:56:54 24 4
gpt4 key购买 nike

我正在尝试使用 Catalyst 在每个请求完成后调用一些代码。基本上,我想运行一些代码作为 finalize 的一部分。据说Catalyst::Plugin::Observe会这样做,但它看起来完全坏了(只是加载插件会破坏 Catalyst)。

我正在尝试修复 Observe 插件,但事实证明这很顽固。

那么,有没有更好的方法来在每个请求结束时调用一些清理代码?

(注意:这是在模型中,而不是 Controller 中,所以我不能只使用 sub end { ... })

最佳答案

实际上,您可以直接将代码添加到“MyApp”类中:

package MyApp;
use Catalyst ...;

...

sub finalize {
my $c = shift;
$c->NEXT::finalize(@_);
# do your thing
}

这就是所有插件的工作方式;它们只是成为您应用程序一部分的方法。

我确实同意让“finalize”生成一个要观察的事件更清晰……但这是我们现在必须处理的事情:)加入irc.perl.org 上的#catalyst,我们可以进一步讨论。 (我是 jrockway,你可能猜到了。)

编辑回复:

(Note: This is in a model, not a controller, so I can't just use sub end { ... })

您确实知道 $cend 中,对吧?

package Your::Model;

sub cleanup {
my $self = shift;
...
}

package Your::Controller;

sub end :Private {
my ($self, $c) = @_;
$c->model('Your::Model')->cleanup( ... )
}

或者您可以按照我上面的建议,从 MyApp::finalize 完成。

真正的问题是,为什么您的模型需要了解请求周期?这听起来像是非常紧密的耦合。

关于perl - 如何在 Catalyst 的请求结束时进行清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com