In message <4.3.2-J.20030909193951.0300e640@192.47.124.3>,
`TOYOFUKU Chikanobu <nobu_toyofuku@nifty.com>' wrote:
> 大体動いてはいるものの超漢字版 ruby の実装の不備から困って
> いることがあります。
>
> (1) getpeername() の移植がうまくいっていないためそのままだと
> Socket::peername でエラーになってしまうので今は無理矢理
> Socket::peername は [AF_INET, 0, "0.0.0.0", "0.0.0.0"] を
> 返すようにしています。
> エラーにしたまま webrick側で rescue してもらうことを期待
> するのはあつかましいでしょうか。
getpeername(2) のセットする errno でエラーでないものはないよ
うですから、例外が上がることを期待するのはいまいちな気がします。
> (2) CGIでは cgihandler から cgi_runner を popen して、
> cgi_runner からスクリプトを exec しているようですが超漢字版
> ruby は exec がない(取りあえず rb_notimplement にしている)
> のでエラーになってしまいます。
> popen は動くのですが何かよい対策はないでしょうか。
例外の場合は system を使うというのはどうでしょうか。
retrieving revision 1.1
diff -u -p -r1.1 cgi_runner.rb
--- cgi_runner.rb 23 Jul 2003 16:51:36 -0000 1.1
+++ cgi_runner.rb 9 Sep 2003 17:31:47 -0000
@@ -18,6 +18,15 @@ def sysread(io, size)
return buf
end
+def exec_script(*cmd)
+ begin
+ exec(*cmd)
+ rescue NotImplementedError
+ system(*cmd)
+ exit($?>>8)
+ end
+end
+
STDIN.binmode
buf = ""
@@ -39,7 +48,7 @@ dir = File::dirname(ENV["SCRIPT_FILENAME
Dir::chdir dir
if interpreter = ARGV[0]
- exec(interpreter, ENV["SCRIPT_FILENAME"])
+ exec_script(interpreter, ENV["SCRIPT_FILENAME"])
# NOTREACHED
end
-exec ENV["SCRIPT_FILENAME"]
+exec_script ENV["SCRIPT_FILENAME"]
--
ごとうゆうぞう