ruby 1.8.7で1.9のBasicObjectを再現したみたいとおもって、次のようなコードを書いて実行した。
Prototype = Object.clone p Prototype.instance_methods # -> ["inspect", "tap", "clone", ...] BASIC_METHODS = %w(== equal? ! != instance_eval instance_exec __send__).map do |method| method.intern end Prototype.instance_eval do undef_method *instance_methods.reject do |method| ::BASIC_METHODS.include?(method) end end p Prototype.instance_methods # => warning: undefining `__send__' may cause serious problem # => warning: undefining `__id__' may cause serious problem # -> []
なんと、すべてのインスタンスメソッドが削除されてしまった。