From: Robert Klemme Date: 2006-01-11T00:58:02+09:00 Subject: Re: Use of eval Rich wrote: > I was thinking of adding a simple command console to a Ruby project > I'm working on (something like a domain-specific REPL). Under what > execution environment do the "eval"-ed strings execute, relative to > the execution environment that is calling the eval method? Normally the binding of the caller is used but you can also provide a binding explicitely: class Test1 def test1(b) eval("@foo = 123", b) end def test2() eval("@bar = 123") end end class Test2 def test1() t = Test1.new t.test1(binding) [self, t] end def test2() t = Test1.new t.test2() [self, t] end end >> Test2.new.test1 => [#, #] >> Test2.new.test2 => [#, #] > Can > classes be opened using eval? Strings must be syntactic correct Ruby. You can of course add methods to classes etc. > Finally, is there anything like Perl's > Safe module available in Ruby? Thank you. Yes. There is the thread global variable $SAFE which controls what can be done. Kind regards robert