Modular Ruby

Hi.

Im looking for a framework or some other means of un-/loading ruby code into
a live interpreter. Im thinking along the lines of TCLs interp command
here, which instanciates a new slave interpreter completely unrelated to
the main one, apart from a user-defined interface procs/methods. The slave
interpreter even can source other files and load binary libs without
affecting the main interpreter.

I guess it can be done via Threads and a sufficent high $SAFE value, though
that would still leave the possibility of polluting the namespace of other
threads, wouldn't it?

Reason for all this is a module system that takes class code from files in
order to extend functionality of the main program. Though i'd settle for a
working way of unloading cleanly without leaving stuff in namespace (if the
module author adheres to set interface regulations, of course).

Thanks.

Bernhard, I am working on such a "sandbox" for the Pandora project.
It's not done, yet, but when it does, it will allow "client side" Ruby
programming through a browser using an object-oriented application
framework. The Pandora wiki engine is pretty solid, and you can
download here:

http://pandora.rubyveil.com/pandora/Pandora/Project/Downloads

Best regards,

Julian I. Kamil <julian.kamil@gmail.com>
http://pandora.rubyveil.com/ - Document publishing and web application
framework
http://books.rubyveil.com/ - The Ruby Bookshelf

I think this is not possible using plain ruby because you can always
access constants in gobal scope. If you control your plugins you can
use anonymous classes that register themselves somewhere. If the
registration is deleted their code is no longer accessible.

Other than that I guess you'll need to modify the interpreter in C
code - or create multiple interpreters.

HTH

Kind regards

robert

ยทยทยท

2006/3/8, Bernhard 'elven' Stoeckner <elven@swordcoast.net>:

Hi.

Im looking for a framework or some other means of un-/loading ruby code into
a live interpreter. Im thinking along the lines of TCLs interp command
here, which instanciates a new slave interpreter completely unrelated to
the main one, apart from a user-defined interface procs/methods. The slave
interpreter even can source other files and load binary libs without
affecting the main interpreter.

I guess it can be done via Threads and a sufficent high $SAFE value, though
that would still leave the possibility of polluting the namespace of other
threads, wouldn't it?

Reason for all this is a module system that takes class code from files in
order to extend functionality of the main program. Though i'd settle for a
working way of unloading cleanly without leaving stuff in namespace (if the
module author adheres to set interface regulations, of course).

--
Have a look: Robert K. | Flickr

Robert Klemme scribbled on Wednesday 08 Mar 2006 23:40:

I think this is not possible using plain ruby because you can always
access constants in gobal scope. If you control your plugins you can
use anonymous classes that register themselves somewhere. If the
registration is deleted their code is no longer accessible.

Other than that I guess you'll need to modify the interpreter in C
code - or create multiple interpreters.

HTH

Kind regards

robert

--
Have a look: Robert K. | Flickr

Thought so. Well, I guess I'll fiddle around with a TCL-like-approach
involving a C base framework managing multiple ruby interpreters sometime
soon.

Gut Nacht :slight_smile: