Please disregard. The StandardInput is being set properly and IronRuby is using it. Writing to a MemoryStream (obviously) positions the stream at EOF - the next read will obviously come up empty unless the position is reset. Used a queue-based stream and all worked well.
From: ironruby-core-boun...@rubyforge.org [mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Nathan Stults Sent: Thursday, November 05, 2009 12:30 PM To: ironruby-core@rubyforge.org Subject: [Ironruby-core] Replacing StandardInput for ScriptEngine? Hello, I am experimenting with script IO in preparation for hosting an IRB session via an embedded SSH server and/or embedded HTTP server, but I'm having trouble getting the script environment to use a custom stream for standard input. I used the following code for setting up my IronRuby environment: public Form1() { InitializeComponent(); _stdIn = new MemoryStream(); _inputWriter = new StreamWriter(_stdIn); txtStandardIn.KeyPress+=(s,e)=> { _inputWriter.Write(e.KeyChar); _inputWriter.Flush(); Debug.Write(e.KeyChar); }; _stdOut = new FifoStream(); _outputReader = new StreamReader(_stdOut); _stdOut.DataArrived += StdOutDataArrived; _scriptEngine = Ruby.CreateEngine(); _globalScope = _scriptEngine.CreateScope(); _scriptEngine.Runtime.IO.SetInput(_stdIn, Encoding.Default); _scriptEngine.Runtime.IO.SetOutput(_stdOut, Encoding.Default); } If I write "hello" + Environment.NewLine to the input stream and flush the writer and then use the ScriptEngine e to execute a "x = gets" - x is always nil. However, if I use the script engine to execute "puts 'hello'" my custom output stream is used and I see my output. I feel like I am missing a key ingredient in my setup process - any help would be appreciated. Thanks, Nathan
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core