This is by design. Ruby global variables are Ruby special feature, not all 
languages have such thing.
You can however use the scope and completely avoid statically referencing 
IronRuby assemblies:

var runtime = ScriptRuntime.Create();
var scope = runtime.CreateScope("Ruby");
scope.SetVariable("customers", list);
scope.Execute("p customers");

In this example, "customers" is a method call that hits method_missing. The 
IronRuby's implementation of method_missing looks into the scope if run in a 
hosted environment.

Tomas

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ben Hall
Sent: Monday, June 23, 2008 5:23 PM
To: [email protected]
Subject: [Ironruby-core] ExecutionContext without references IronRuby

Hi,

This might be a bit of a strange request,  but is it possible to get
access to the ExecutionContext without actually referencing the
IronRuby assembly?

As a quick demo, I wrote the following code:

            ScriptRuntime runtime = IronRuby.CreateRuntime();
            engine = IronRuby.GetEngine(runtime);
            RubyExecutionContext ctx = IronRuby.GetExecutionContext(engine);

            list = new List<string>();
            ctx.DefineGlobalVariable("customers", list);

Ideally, what I wanted to write was something more like but $customers
is always nil.

            scope = engine.CreateScope();
            scope.SetVariable("$customers", list);

I was hoping this would have had the same affect as the code above.

Is this by design, a limitation or a bug?

Thanks

Ben
Blog.BenHall.me.uk
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to