From: "takiuchi (Genki Takiuchi)" Date: 2013-08-25T23:24:40+09:00 Subject: [ruby-dev:47656] [ruby-trunk - Feature #8726] Class#source_location Issue #8726 has been updated by takiuchi (Genki Takiuchi). Timeoutのバグの本質は、timeoutブロック内で rescue Exception した場合に、timeoutの実装が 内部的に使っている Timeout::ExitException を拾ってしまうことのようです。 Timeoutの例は一例でして、Class.source_location があれば無名クラスがどこで定義されたものか デバッグするのが容易になる、というのが趣旨でした。 ---------------------------------------- Feature #8726: Class#source_location https://bugs.ruby-lang.org/issues/8726#change-41343 Author: takiuchi (Genki Takiuchi) Status: Rejected Priority: Normal Assignee: Category: core Target version: current: 2.1.0 Classオブジェクトが生成された場所を返す Class#source_location メソッドの実装を希望いたします。 これによって解決される問題の例としては、Timeout::timeout が無名の例外クラスオブジェクトを raise した 場合に、どこで仕掛けられた timeout なのか、発生場所を特定できるようになります。 このようなケースでは、例外オブジェクトが保有している backtrace はtimeoutが発生した時点での プログラム実行位置を起点としており、Timeout::timeout(...) を仕掛けた場所の情報は失われています。 -- http://bugs.ruby-lang.org/