From: Erik Veenstra Date: 2006-02-09T03:23:23+09:00 Subject: Re: Sandboxing eval'd code class String def de_inspect Thread.new do $SAFE = 4 de_inspect_unsafe end.value end def de_inspect_unsafe # But fast... eval(self, Module.new.module_eval{binding}) end def evil_eval # Don't use it !!! eval(self) end end def foo ; p [self, 1] ; end foo "def foo ; p [self, 2] ; end".evil_eval foo "def foo ; p [self, 3] ; end".de_inspect_unsafe foo "def foo ; p [self, 4] ; end".de_inspect # Will fail... foo