なかだです。

At Wed, 6 Feb 2008 17:39:59 +0900,
Nobuyoshi Nakada wrote in [ruby-core:15373]:
> Because Timeout::Error has changed since 1.8 but irb hasn't
> follow it.

irbがtimeoutで死んじゃうというのは、あまり意図した結果ではないと
思いますが、いかがなもんでしょうか。 > 石塚さん


Index: lib/irb.rb =================================================================== --- lib/irb.rb (revision 15377) +++ lib/irb.rb (working copy) @@ -150,8 +150,13 @@ module IRB @context.evaluate(line, line_no) output_value if @context.echo? - rescue StandardError, ScriptError, Abort - $! = RuntimeError.new("unknown exception raised") unless $! - print $!.class, ": ", $!, "\n" - if $@[0] =~ /irb(2)?(\/.*|-.*|\.rb)?:/ && $!.class.to_s !~ /^IRB/ + exc = nil + rescue Interrupt => exc + rescue SystemExit, SignalException + raise + rescue Exception => exc + end + if exc + print exc.class, ": ", exc, "\n" + if exc.backtrace[0] =~ /irb(2)?(\/.*|-.*|\.rb)?:/ && exc.class.to_s !~ /^IRB/ irb_bug = true else @@ -162,5 +167,5 @@ module IRB lasts = [] levels = 0 - for m in $@ + for m in exc.backtrace m = @context.workspace.filter_backtrace(m) unless irb_bug if m @@ -184,6 +189,5 @@ module IRB end if $SAFE > 2 - warn "Error: irb does not work for $SAFE level higher than 2" - exit 1 + abort "Error: irb does not work for $SAFE level higher than 2" end end
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦