Issue #10421 has been updated by Tsuyoshi Sawada.


`method_missing`を使用しているときに`BasicObject`のインスタンスが紛れ込むと、デバッグするために`inspect`で正体を見ようとすると無限再帰呼び出しを起こして収拾がつかなくなるので、`inspect`およびそれに必要な最低限のメソッドは初めから`BasicObject`に定義されていてもいいのではないかと思います。

----------------------------------------
Bug #10421: BasicObject継承クラスで object_id メソッドを定義すると redefining ... 警告が出る
https://bugs.ruby-lang.org/issues/10421#change-49602

* Author: Satoshi TAGOMORI
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin12.0]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
BasicObject 継承クラスに通常 `#object_id` がありませんが、これだと pp などに該当オブジェクトを与えると NoMethodError 例外が出たりして実用上困るケースがあります。ただし `#object_id` を定義すると以下のような警告が出ます。

    warning: redefining `object_id' may cause serious problems

BasicObject には元々 `#object_id` は存在しないため redefining という警告はこの場合は誤りであり、また `#object_id` を定義することの危険については意図してBasicObjectを使っているプログラマには理解されているものと思います。

このため、この警告は BasicObject 継承クラスにおいては出さないのが適当かと思います。




-- 
https://bugs.ruby-lang.org/