On Mon, Feb 9, 2009 at 1:11 PM, Meinrad Recheis <[email protected]>wrote:
> On Mon, Feb 9, 2009 at 1:05 PM, Meinrad Recheis <[email protected] > > wrote: > >> On Mon, Feb 9, 2009 at 12:12 PM, Meinrad Recheis < >> [email protected]> wrote: >> >>> Hello, >>> >>> I am very pleased that I got everything working and found iron ruby in a >>> quite usable state for me. Congratulations. >>> >>> Question: How do you set a global variable from C#? I found a workaround >>> via setting a local variable scope.SetVariable("a", obj) in the scope and >>> assigning it to a global via engine.Execute("$a=a", scope). >>> The Runtime.Globals.GetVariable and SetVariable don't seem to get / set >>> the ruby globals. >>> >> >> Oh, i just found out that ScriptScope.GetVariable is throwing an exception >> ... >> >> >> ******************************************************************************** >> ArgumentNullException: "Value cannot be null. >> Parameter name: field" >> >> -------------------------------------------------------------------------------- >> Microsoft.Scripting.Utils.ContractUtils.RequiresNotNull(Object value, >> String paramName) >> Microsoft.Scripting.SymbolTable.StringToId(String field) >> Microsoft.Scripting.Hosting.ScriptScope.GetVariable(String name) >> > > sorry forgot to say, that I made sure, that the "name" parameter is *not* > null. > I am not yet deep enough into the sources to fix things like these myself. > > -- henon ok, I was too fast on this one. actually it was null because a ruby_string casted to c# string is null. It is pretty dangerous to assume a value presented as "a" by the debugger to be a System.String when that value comes out from ruby ;) so the problem is not the exception but rather that GetVariable("a") does not find existing local variables which can be evaluated by Execute("a"). This time I made sure I made no mistake.
_______________________________________________ Ironruby-core mailing list [email protected] http://rubyforge.org/mailman/listinfo/ironruby-core
