Method: ActsAsRunnableCode::InstanceMethods#run_code
- Defined in:
- lib/acts_as_runnable_code.rb
#run_code(toplevel_object = nil, options = {}) ⇒ Object
Run the user’s code in the context of a toplevel_object The toplevel_object will be automatically wrapped and copied into the sandbox
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/acts_as_runnable_code.rb', line 10 def run_code(toplevel_object = nil, = {}) [:timeout] ||= self.class.[:timeout] s = sandbox if toplevel_object s.set(:toplevel, ActsAsWrappedClass::WrapperFinder.find_wrapper_for(toplevel_object)) s.set(:code, self.send(self.class.source_code_field)) result = s.eval("eval(code, toplevel.send(:binding))", ) else s.set(:code, self.send(self.class.source_code_field)) result = s.eval("eval(code)", ) end result.class.respond_to?(:wrapper_class?) && result.class.wrapper_class? ? result._wrapped_object : result end |