From: Chris Pine Date: 2002-12-13T02:15:13+09:00 Subject: Re: deleting a class ----- Original Message ----- When you write class Foo; end Object.module_eval { remove_const 'Foo' } Now it's not possible to access the class Foo. ---------------------------- Sure it is: def getAllClasses classes = [] ObjectSpace.each_object (Module) do |klass| classes << klass.inspect end classes end originalClasses = getAllClasses class Foo; end Object.module_eval { remove_const 'Foo' } GC.start deletedClasses = [] ObjectSpace.each_object (Module) do |klass| deletedClasses << klass if(!originalClasses.include?(klass.inspect)) end foo = deletedClasses[0].new p foo # --> # Note that if you change class Foo; end to eval 'class Foo; end' you'll get a NoMethodError, since the class is deleted. This proves that my code isn't holding a reference to the class. Chris