Featured image of post 続々・色々と動かなかった話

続々・色々と動かなかった話

NanoAの話ですが

NanoAの話ですが。 オフィシャルのcompile_errorはちゃんと動作するのだが、XREAではcompile_errorは動かない。 まあ、XREAはよいとしても、ローカル環境でも動かないのがとてもつらい。 CGI::ExceptionManagerがちゃんと働いていれば、コンパイル時のエラーも補足してくれるはずなのだが…。 と、思ってソースを見ていると、原因っぽいところがわかりました。

CGI::ExceptionManagerのoutputで、HTTPステータス500を出力していますが、そこの改行コードに問題があったようです。 「\r\n」になっているところを「\n」に変えてやるとちゃんとローカル環境でも動きました。 ただ、これがHTTP的に正しいのかどうかが少し疑問です。 …と、思ったのですが。 先日変更したステータス302の出力は「\n」でやっていました。 とりあえず、extlibにあったCGI::ExceptionManager::StackTrace::CGIは以下のように変更しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Index: CGI.pm
===================================================================
--- CGI.pm  (リビジョン 36612)
+++ CGI.pm  (作業コピー)
@@ -8,9 +8,9 @@
warn $err->{message};
-    print "Status: 500\r\n";
-    print "Content-type: text/html; charset=utf-8\r\n";
-    print "\r\n";
+    print "Status: 500\n";
+    print "Content-type: text/html; charset=utf-8\n";
+    print "\n";
my $body = $args{renderer} ? $args{renderer}->($err, %args) : $err->as_html(%args);
utf8::encode($body);

うーん。 ちゃんと動くようになって、なんだか、とってもスッキリしました。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。