まつもと ゆきひろです

In message "Re: [ruby-dev:39585] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect"
    on Fri, 30 Oct 2009 16:04:00 +0900, Yukihiro Matsumoto <matz / ruby-lang.org> writes:

||この変更で、to_aryやto_str内部でのNoMethodErrorがわからなくなっ
||ています。

|気にはなっていたので、歓迎します。コミットしてください。

と思ったのですが、

test_range_numeric_string(TestRange) [/home/matz/work/ruby/test/ruby/test_range.rb:18]
<["9", "10"]> expected but was
<[]>.

というエラーが増えていました。これはSimpleDelegatorのto_str
メソッドがmethod_missingで実装されているため、このコミットに
よって、method_missingが呼ばれなくなってしまった、ということ
のようです。

うーむ。

  * revertしてrescueの条件を厳しくする(receiverとidが一致し
    た場合だけキャッチする、とか)

  * method_missingが再定義されている時にはそれを呼ぶ。ちゃん
    と動作するかどうかはよくわからない

いずれにせよ、現状ではまずそうです。