>>>>> "C" == Chris Pine <nemo / hellotree.com> writes:

C>   class Foo; end

pigeon% cat b.rb
#!/usr/bin/ruby
def getAllClasses
   classes = []
   ObjectSpace.each_object (Module) do |klass|
      classes << klass.inspect
   end
   classes
end

originalClasses = getAllClasses
class Object
   class Foo; end 
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
pigeon% 

pigeon% b.rb
./b.rb:24: undefined method `new' for nil (NameError)
pigeon% 


C> you'll get a NoMethodError, since the class is deleted.  This proves that my
C> code isn't holding a reference to the class.

This prove nothing.


Guy Decoux