Class: RailsMcp::Executor
- Inherits:
-
Object
- Object
- RailsMcp::Executor
- Defined in:
- lib/rails_mcp/executor.rb
Class Method Summary collapse
-
.eval(code) ⇒ Object
Evaluates Ruby code and captures stdout/stderr.
Class Method Details
.eval(code) ⇒ Object
Evaluates Ruby code and captures stdout/stderr.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rails_mcp/executor.rb', line 7 def self.eval(code) code = code.to_s raise ArgumentError, "code can't be blank" if code.strip.empty? out, err = StringIO.new, StringIO.new old_out, old_err = $stdout, $stderr result = nil error = nil begin $stdout, $stderr = out, err result = TOPLEVEL_BINDING.eval(code) rescue SyntaxError, StandardError => e error = e ensure $stdout, $stderr = old_out, old_err end if error backtrace = error.backtrace&.first(3)&.join("\n ") return "#{error.class}: #{error.}\n#{backtrace ? " #{backtrace}\n" : ""}" end parts = [] parts << "=> #{result.inspect}\n" unless result.nil? parts << out.string unless out.string.empty? parts << err.string unless err.string.empty? parts.join end |