I have a very simple test.rb file:
puts "Hello World"
I want to execute this file within c#, eg:
var runtime = Ruby.CreateRuntime();
runtime.ExecuteFile("C:\test.rb");
How can I capture the "Hello World"?
ScriptRuntime has an IO property which returns a ScriptIO object. You can call SetOutput on that and redirect the output. As others have mentioned there's also Console.SetOut which you might want to call incase the user calls Console.WriteLine directly. The nice thing about using ScriptIO though is you can have multiple scripts in different ScriptRuntime's writing to different outputs.
You can redirect standard output and read it in your C# program as shown here.