麋是非常可爱的,但是从我的观点来看,有时简单的拼写错误可能导致令人兴奋的令人兴奋的长堆栈,零有用的内容.
那么,是否有任何工具可以将这种爆炸解释为有用的东西?
特别是对于使用普通Moose,Moose + MooseX :: Method :: Signatures和MooseX :: Declare的类.
这些工具只需要在开发过程中有所帮助,以捕捉那些使事情无效的错字或思考问题.
=========================
下面的建议之后,我用这个并不十分-A模块,但它减少我的头疼一点,更多的想法表示欢迎,但:
package MooseX::QuietCarping;
# Not actually a Moose thing, but helpful for Moose.
# calm Moose-internal stacktraces down a little
use Carp;
my %retain = ();
sub import {
my $class = shift;
$retain{$_}++ for @_;
}
CHECK {
for (sort keys %INC) {
s{\.pm$}{};
s{[/\\]}{::}g; # CROSS PLATFORM MY ARSE
next if $retain{$_};
$Carp::Internal{$_}++ if /^(?:Class::MOP|Moose|MooseX)\b/
}
%retain = (); # don't need this no more
}
1;
Run Code Online (Sandbox Code Playgroud)
我前段时间尝试过的一种方法是将 Moose 相关的类放入哈希中%Carp::Internal,如下所示:
$Carp::Internal{$_}++ for qw{
Class::MOP
Class::MOP::Attribute
Class::MOP::Class
...
};
Run Code Online (Sandbox Code Playgroud)
此类将在堆栈跟踪中跳过,使其更加紧凑并强调您自己的代码。
%INC您可以通过遍历变量来找到它们:
package Dummy;
use Moose;
use MooseX::Declare;
# use ....;
for (sort keys %INC) {
s{\.pm$}{};
s{/}{::}g;
print "$_\n" if /^(Class::MOP|Moose|MooseX)\b/;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |