From: Tomaso Tosolini Date: 2007-12-28T19:55:00+09:00 Subject: Re: Executing ruby code stored as a string in a database Hi have you tried with class_eval? when you have to execute ruby code contained in a string it should be fine for you def define_validation_method(name, method_body) self.class.class_eval(" def #{name} #{method_body} end ") end Hope this helps Tom Etienne Van tonder wrote: > I'm trying to retrieve some ruby code from a database as a string, I > would then like to execute this code. So far I've tried many approaches > but my latest uses define_method. > > I have a method defined to use define_method, i.e. > > def define_validation_method(name, &block) > self.class.send(:define_method, name, &block) > end > > What I would like to do is pass the code that I want executed to this > method as an example: > > function_module = define_validation_method( > :validate_object) > "do |x, y, z| > if x > 1 > x = y + z > else > x = y - z > end > end" > > This of course does not work as the method expects a block not a string. > Can anyone suggest how to get this method to work, or suggest another > method. The code is being executed within a ruby class. > > Thanks.