You can find many hosting examples in HostingTests.cs.
As for global and top-level local variables:
global constants (ie. constants on Object).
top-level local variables. They are looked up via method_missing on a
top-level singleton object. Ruby top-level program executes in a context
where “self” is a singleton of Object. IronRuby defines method_missing
on this singleton. If a method name ends with “=” it writes to the
scope, otherwise it reads from the scope.
ScriptScope scope = Engine.CreateScope();
Engine.Execute(“self.z = x + y”, scope);
int result = scope.GetVariable(“result”);
Assert(result == 3);
Ruby global variables don’t have any mapping to DLR scopes. We don’t
have any well designed API for them yet, you can do this for now:
[mailto:email@example.com] On Behalf Of Meinrad
Sent: Monday, February 09, 2009 3:13 AM
Subject: [Ironruby-core] setting global variables in embedded ironruby
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.
BTW: as for local variables: scope.GetVariableNames() does return an
empty list. Again a workaround is Execute(“local_variables”, scope).