December 12, 2005
die しても Sledge::Plugin::DebugScreen で出しましょう
ド派手なデバグスクリーンを表示させる【Sledge::Plugin::DebugScreen】(2181) - MF::TokuLog
MoFedge::Plugin::TokuLog! - Perl で StackTrace とりたい
いや、ちょちょっと追加しただけなので、patch で。
はてな CTO の伊藤さんが
naoyaのはてなダイアリー - いいもの使ってる感
と、ルック & フィールの重要性を「いいもの使ってる感」というわかりやすい砕けた表現であらわしてます。
なるほど。
よくわかる気がします。
その点に関しては「10 分で (ry」をご覧になればわかる通り、チープなフィーリングに完璧慣らされてしまっていたので、こういうのを改めて取り入れてみると「あ、いいかもな」って気になれます。
これで、日頃ほとんどよくないもの使ってる感を感じていた Sledge ユーザーの皆様方も、やっといいもの使ってる感を満喫出来ますね。
あれ、極端だったかな。。。
いあ、
Catalyst, SubWay, Rails などのモダーンな Framework では、デバッグモードで Internal Server Error が起きるとスタックトレースなどをド派手な HTML で表示してデバッグを助けるような仕組みを持っています。で、Sledge::Plugin::DebugScreen なかなかド派手で気に入ったんですが、
But, Sledge にはそれが無い!なんてこった!この事実がバレる前にはやくその機能をつけないと!
つーわけで、Sledge::Plugin::DebugScreen とかいうものを作ってみました。
MoFedge::Plugin::TokuLog! - Perl で StackTrace とりたい
Sledge::Plugin::DebugScreen だと Sledge::Exceptions を投げた場合にはスタックトレースとれるんですが、単に die した場合に取れないんですよねぇ。。。ってことで、
die した時でもド派手 + StackTrace 付きにしてみました。いや、ちょちょっと追加しただけなので、patch で。
--- DebugScreen.pm Mon Dec 12 15:33:22 2005
+++ DebugScreen.pm Mon Dec 12 16:09:20 2005
@@ -1,9 +1,10 @@
package Sledge::Plugin::DebugScreen;
use strict;
use warnings;
-our $VERSION = '0.01';
+our $VERSION = '0.02';
use Template;
+use Devel::StackTrace;
our $TEMPLATE = q{
<?xml version="1.0" encoding="euc-jp"?>
@@ -73,9 +74,9 @@
</tr>
[% FOR s IN stacktrace -%]
<tr>
- <td>[% s.pkg | html %]</td>
- <td>[% s.line | html %]</td>
- <td>[% s.file | html %]</td>
+ <td>[% (s.pkg || s.package) | html %]</td>
+ <td>[% s.line | html %]</td>
+ <td>[% (s.file || s.filename) | html %]</td>
</tr>
[%- END %]
</table>
@@ -88,7 +89,10 @@
sub import {
my $self = shift;
my $pkg = caller;
-
+ local $pkg::SIG{__DIE__} = sub {
+ &_handle_exception($self, @_);
+ die @_;
+ };
no strict 'refs';
*{"$pkg\::handle_exception"} = \&_handle_exception;
}
@@ -102,7 +106,8 @@
desc => "$E",
pages => $self,
};
- $vars->{stacktrace} = $E->stacktrace if $E->can('stacktrace');
+ $vars->{stacktrace} = $E->can('stacktrace') ?
+ $E->stacktrace : [Devel::StackTrace->new->frames];
my $tmpl = Template->new;
my $output;
die の時は Devel::StackTrace とかが使われるようになってます。はてな CTO の伊藤さんが
naoyaのはてなダイアリー - いいもの使ってる感
こういう本ちゃんの機能とはあんまり関係ない部分、例えばルック & フィールの作り込みみたいなのは、一見どうでもいいようで割と重要なんじゃないなあと思います。
Movable Type は管理画面のデザインが洗練されてて、機能も StyleCatcher とか散りばめられたギミックとかがいちいちかっこよくて使ってるだけでなんか気分が良くなる風があります。こういうのを「いいもの使ってる感」とか呼んでます。
と、ルック & フィールの重要性を「いいもの使ってる感」というわかりやすい砕けた表現であらわしてます。
なるほど。
よくわかる気がします。
その点に関しては「10 分で (ry」をご覧になればわかる通り、チープなフィーリングに完璧慣らされてしまっていたので、こういうのを改めて取り入れてみると「あ、いいかもな」って気になれます。
これで、日頃ほとんどよくないもの使ってる感を感じていた Sledge ユーザーの皆様方も、やっといいもの使ってる感を満喫出来ますね。
あれ、極端だったかな。。。
いあ、
%SIG とか数年振りに使った。