From: "井上 浩一" Date: 2002-03-13T16:23:02+09:00 Subject: [ruby-list:34393] Re: Ruby オプション 井上です。 毎度、お騒がせしております。 また、Rubyをいじくる発想のコメントですが、私の暴走の定義をしたいと思います。 暴走の定義 1)時間自爆 明らかに暴走の場合は、指定した時間以上の動作を行うこととする。 例えば、 ruby --kamikaze 300 5分以上経つと、例外が発生する これは状況自爆でなくて、時限自爆。timeoutを使えば良いかもしれませんが、 スクリプトのレベルでなく Ruby本体レベルで行うことで、ソースが汚れず強力であ る。 2)状況自爆 loop{ print "A" } これも作者の意図をしている場合もあるので、これだけでは判断付きにくい。よっ て、 $LOOP_ENABLE = false というグローバル変数を設けて、ループの善悪を決める。 falseはループを認めないということで、同じ位置に戻った場合 Rubyのソースでルー プは必ずスタート位置があるので、 そこを通過したら、FLAGを立て2回目回るとフラグを見て例外を発生させる。 例外=終了と位置づけている。 例外としている点は、ここで強制終了されたら困る場合の保険で3回目通過した場合 は、問答無用の強制終了を行う。 呼び合いの場合 def a() b() end def b() a() end もともと、このようなソースは書く自体あまり無いのですが、 実行後に分かる複雑なものもあるかもしれませんのでRubyに持ってもらった方が 話が早いと思いました。 すべでこれらはデバックモードの話で、オプション指定なので通常モード時には困ら ないと思います。 へぼな意見ばかりですが、みなさんのご意見をお聞かせ下さい。 _________________________________________________________________ メールだけじゃなかった!インターネット便利サービスがひとまとまり http://explorer.msn.co.jp/