From: "nagachika (Tomoyuki Chikanaga)" Date: 2012-06-28T03:32:38+09:00 Subject: [ruby-dev:45861] [ruby-trunk - Bug #6659][Open] prepend した Class/Module の ancestors に Class が混入する Issue #6659 has been reported by nagachika (Tomoyuki Chikanaga). ---------------------------------------- Bug #6659: prepend した Class/Module の ancestors に Class が混入する https://bugs.ruby-lang.org/issues/6659 Author: nagachika (Tomoyuki Chikanaga) Status: Open Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-06-27 trunk 36240) [x86_64-darwin10.8.0] Module#prepend を利用した Class/Module に対して ancestors を呼ぶと Class が入りこみます。 ancestors に入るだけで Object#is_a? の判定やメソッド呼び出しができるようになったりはしていないようです。 module M1 end module M2 prepend M1 end M2.ancestors # => [M2, M1, Class] class C prepend M1 end C.ancestors # => [C, M1, Class, Object, Kernel, BasicObject] C.new.is_a(Class) # => false C.new.superclass # => NoMethodError: undefined method `allocate' for # -- http://bugs.ruby-lang.org/