From: "Mikael Høilund" Date: 2008-10-20T06:31:23+09:00 Subject: Re: Proc metaprogramming tricks? class C def self.inherited(klass) klass_name = klass.name[/[^:]+$/] klass.to_s.split(/::/)[0...-1].inject(Object) { |const, name| const.const_get name }.send :remove_const, klass_name C.const_set klass_name, klass end end NB: Don't do this.