Thanks Tomas. Michael
Tomas Matousek wrote:
This works: import clr clr.AddReference('IronRuby') from IronRuby import Ruby from System import Array paths = [r'C:\Binaries\IronRuby\lib\IronRuby', r'C:\Binaries\IronRuby\lib\ruby\1.8'] array = Array[str](paths) engine = Ruby.CreateEngine() engine.SetSearchPaths(array) scope = engine.CreateScope() source = engine.Execute(''' require 'date' def d Date::civil(2003, 4, 8) end ''', scope) print scope.d() print engine.Runtime.Globals.Date --- Top-level methods, not local variables, are published in the scope. Classes and modules are published in Runtime.Globals scope. And this works too (the value of the last expression is returned): print engine.Execute(''' require 'date' Date::civil(2003, 4, 8) ''') Tomas -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Michael Foord Sent: Saturday, August 22, 2009 8:46 AM To: Discussion of IronPython Subject: Re: [IronPython] IronPython and IronRuby interop with IronRuby 0.9 Hehe - well I can fish the contents of the library I required from engine.Runtime.Globals, which seems right as I'm requiring it in the global namespace. I'm still surprised the ScriptScope is empty. Michael Michael Foord wrote:Ok, so setting the engine search paths solves the failure to find the library, but the ScriptScope is still coming back empty. In the example below I would have expected to see 'd' in the ScriptScope. c:\Binaries\IronRuby\bin>ipy.exe interop.py [] From this code: import clr clr.AddReference('IronRuby') clr.AddReference('Microsoft.Scripting') from System import Array paths = [r'C:\Binaries\IronRuby\lib\IronRuby', r'C:\Binaries\IronRuby\lib\ruby\1.8'] array = Array[str](paths) source_code = "require 'date'\nd = Date::civil(2003, 4, 8)\n" from Microsoft.Scripting import SourceCodeKind from IronRuby import Ruby engine = Ruby.CreateEngine() engine.SetSearchPaths(array) source = engine.CreateScriptSourceFromString(source_code, SourceCodeKind.Statements) scope = engine.CreateScope() source.Execute(scope) print dir(scope) Michael 2009/8/22 Michael Foord <[email protected] <mailto:[email protected]>> Hello all, I've played a little bit with IronPython and IronRuby interop with the IronRuby 0.9 binaries. A very basic example works as expected: IronPython 2.6 Beta 2 (2.6.0.20) on .NET 2.0.50727.4927 Type "help", "copyright", "credits" or "license" for more information. >>> import clr >>> clr.AddReference('IronRuby') >>> from IronRuby import Ruby >>> >>> engine = Ruby.CreateEngine() >>> source = engine.CreateScriptSourceFromString("puts 'Hello from Ruby'") >>> scope = engine.CreateScope() >>> >>> source.Execute(scope) Hello from Ruby >>> However my attempts to use a Ruby library fails. The same code works when executed from ir.exe: >>> import clr >>> clr.AddReference('IronRuby') >>> clr.AddReference('Microsoft.Scripting') >>> >>> from Microsoft.Scripting import SourceCodeKind >>> from IronRuby import Ruby >>> engine = Ruby.CreateEngine() >>> source = engine.CreateScriptSourceFromString("require 'date'", SourceCodeKin d.Statements) >>> scope = engine.CreateScope() >>> source.Execute(scope) Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception: no such file to load -- date >>> I tried adding a reference to IronRuby.Libraries to the runtime associated with the Ruby engine (using runtime.LoadAssembly) but this didn't help. Requiring Ruby modules I've written myself doesn't blow-up but doesn't populate the scriptscope they are executed in with anything. Likewise calling engine.ExecuteFile('foo.rb') returns an empty ScriptScope. Any ideas? All the best, Michael Foord -- http://www.ironpythoninaction.com/ http://www.voidspace.org.uk/blog -- http://www.ironpythoninaction.com/ ---------------------------------------------------------------------- -- _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com-- http://www.ironpythoninaction.com/ http://www.voidspace.org.uk/blog _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
-- http://www.ironpythoninaction.com/ http://www.voidspace.org.uk/blog _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
