On 13.06.2008 16:57, Remi Gillig wrote:
> Hello,
> 
> I just seached about this problem and found two 2 years old threads :
> http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/875a099efd08f70d
> http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/3e6fa1a935e50697
> 
> Each of these talk about how to reset the whole Ruby state, like
> starting from a clean interpreter but without rerunning it. More or
> less like emptying everything and putting back the predefined
> constants, modules and classes.
> 
> The first thread has a solution which is using remove_const to not be
> able to create classes anymore but this actually does not work
> properly because you can still do this :
> # class Hello end
> # $hello = Hello
> # Object.instance_eval("remove_const :Hello")
> # h = $hello.new
> 
> I'm quite surprised that there was nothing about this in over 2 years
> of development. Maybe there are some explanation inside the Ruby
> Hacking Guide but most of it is in Japanese.
> 
> Anybody has any idea on how to implement this? Thanks.

I am wondering what you need that for.  I guess removal is pretty 
complex and thus time consuming because even a freshly started Ruby 
interpreter does contain some classes and method definitions.  And 
creating a process isn't that expensive.

Having said that, maybe you can look at how Ruby can be embedded in C 
programs.  Then you could create a new initial context if something like 
that exists.

Cheers

	robert