Aaron Clauson
2008-Feb-19 04:17 UTC
[Ironruby-core] Can''t run script after engine exception
Hi All, I''ve got a problem where if I execute a Ruby script that has a syntax error or missing method and that correctly fails I cannot use that engine object to subsequently execute a valid script. If I restart the application and re-execute the corrected script it works. It''s only executing an erroneous script and then a valid script that fails. The code I''m using to run the script is: IScriptEnvironment scriptEnvironment = IronRuby.CreateRuntime(); IScriptEngine rubyengine = IronRuby.GetEngine(scriptEnvironment); SourceUnit scriptSource rubyengine.CreateScriptSourceFromString(myScript); IScriptScope scope = rubyengine.CreateScope(); rubyengine.Execute(scope, scriptSource); Does anyone know if there is anyway to re-initialise the Ruby engine after a syntax or methodmissing exception so scripts can be executed again without needing to restart the application? Regards, Aaron -- Posted via http://www.ruby-forum.com/.
Tomas Matousek
2008-Feb-19 04:32 UTC
[Ironruby-core] Can''t run script after engine exception
Could you sent a full repro containing the source code of both scripts and the order of execution? Tomas -----Original Message----- From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Aaron Clauson Sent: Monday, February 18, 2008 8:17 PM To: ironruby-core at rubyforge.org Subject: [Ironruby-core] Can''t run script after engine exception Hi All, I''ve got a problem where if I execute a Ruby script that has a syntax error or missing method and that correctly fails I cannot use that engine object to subsequently execute a valid script. If I restart the application and re-execute the corrected script it works. It''s only executing an erroneous script and then a valid script that fails. The code I''m using to run the script is: IScriptEnvironment scriptEnvironment = IronRuby.CreateRuntime(); IScriptEngine rubyengine = IronRuby.GetEngine(scriptEnvironment); SourceUnit scriptSource rubyengine.CreateScriptSourceFromString(myScript); IScriptScope scope = rubyengine.CreateScope(); rubyengine.Execute(scope, scriptSource); Does anyone know if there is anyway to re-initialise the Ruby engine after a syntax or methodmissing exception so scripts can be executed again without needing to restart the application? Regards, Aaron -- Posted via http://www.ruby-forum.com/. _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core
Aaron Clauson
2008-Feb-19 06:08 UTC
[Ironruby-core] Can''t run script after engine exception
Tomas Matousek wrote:> Could you sent a full repro containing the source code of both scripts > and the order of execution? > > TomasI thought I''d made a mistake for a while as I was having real difficulty reapeating the problem. However I''ve found that it''s a particular type of syntax error that causes the problem rather than any syntax error. The end statement missing on an if block is the culprit. Below is the code that illustrates the problem: IScriptEnvironment scriptEnvironment = IronRuby.CreateRuntime(); IScriptEngine rubyengine = IronRuby.GetEngine(scriptEnvironment); string goodScript @" if true puts ''Ruby is cool'' end"; string badScript @" if true puts ''Ruby is cool'' "; Console.WriteLine("Attempting run1 (good script)."); rubyengine.Runtime.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(goodScript)); try { Console.WriteLine("Attempting run2 (bad script)."); rubyengine.Runtime.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(badScript)); } catch (Exception excp) { Console.WriteLine(excp.GetType()); } try { Console.WriteLine("Attempting run3 (good script)."); rubyengine.Runtime.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(goodScript)); } catch (Exception excp2) { Console.WriteLine(excp2.GetType()); } Output: Attempting run1 (good script). Ruby is cool Attempting run2 (bad script). Microsoft.Scripting.SyntaxErrorException Attempting run3 (good script). Microsoft.Scripting.SyntaxErrorException Regards, Aaron -- Posted via http://www.ruby-forum.com/.
Tomas Matousek
2008-Feb-19 07:51 UTC
[Ironruby-core] Can''t run script after engine exception
Thanks, will investigate. Tomas -----Original Message----- From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Aaron Clauson Sent: Monday, February 18, 2008 10:09 PM To: ironruby-core at rubyforge.org Subject: Re: [Ironruby-core] Can''t run script after engine exception Tomas Matousek wrote:> Could you sent a full repro containing the source code of both scripts > and the order of execution? > > TomasI thought I''d made a mistake for a while as I was having real difficulty reapeating the problem. However I''ve found that it''s a particular type of syntax error that causes the problem rather than any syntax error. The end statement missing on an if block is the culprit. Below is the code that illustrates the problem: IScriptEnvironment scriptEnvironment = IronRuby.CreateRuntime(); IScriptEngine rubyengine = IronRuby.GetEngine(scriptEnvironment); string goodScript @" if true puts ''Ruby is cool'' end"; string badScript @" if true puts ''Ruby is cool'' "; Console.WriteLine("Attempting run1 (good script)."); rubyengine.Runtime.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(goodScript)); try { Console.WriteLine("Attempting run2 (bad script)."); rubyengine.Runtime.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(badScript)); } catch (Exception excp) { Console.WriteLine(excp.GetType()); } try { Console.WriteLine("Attempting run3 (good script)."); rubyengine.Runtime.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(goodScript)); } catch (Exception excp2) { Console.WriteLine(excp2.GetType()); } Output: Attempting run1 (good script). Ruby is cool Attempting run2 (bad script). Microsoft.Scripting.SyntaxErrorException Attempting run3 (good script). Microsoft.Scripting.SyntaxErrorException Regards, Aaron -- Posted via http://www.ruby-forum.com/. _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core
Michael Letterle
2008-Feb-19 12:25 UTC
[Ironruby-core] Can''t run script after engine exception
Note that this happens in rbx as well, if you make a syntax error, you can''t do any thing any more and have to exit the interpreter. On Feb 18, 2008 11:32 PM, Tomas Matousek <Tomas.Matousek at microsoft.com> wrote:> Could you sent a full repro containing the source code of both scripts and the order of execution? > > Tomas > > > -----Original Message----- > From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Aaron Clauson > Sent: Monday, February 18, 2008 8:17 PM > To: ironruby-core at rubyforge.org > Subject: [Ironruby-core] Can''t run script after engine exception > > Hi All, > > I''ve got a problem where if I execute a Ruby script that has a syntax > error or missing method and that correctly fails I cannot use that > engine object to subsequently execute a valid script. If I restart the > application and re-execute the corrected script it works. It''s only > executing an erroneous script and then a valid script that fails. > > The code I''m using to run the script is: > > IScriptEnvironment scriptEnvironment = IronRuby.CreateRuntime(); > IScriptEngine rubyengine = IronRuby.GetEngine(scriptEnvironment); > SourceUnit scriptSource > rubyengine.CreateScriptSourceFromString(myScript); > IScriptScope scope = rubyengine.CreateScope(); > rubyengine.Execute(scope, scriptSource); > > Does anyone know if there is anyway to re-initialise the Ruby engine > after a syntax or methodmissing exception so scripts can be executed > again without needing to restart the application? > > Regards, > > Aaron > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core >-- Michael Letterle [Polymath Programmer] http://michaeldotnet.blogspot.com