Modular Ruby


#1

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.


#2

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 removed_email_address@domain.invalid
http://pandora.rubyveil.com/ - Document publishing and web application
framework
http://books.rubyveil.com/ - The Ruby Bookshelf


#3

2006/3/8, Bernhard ‘elven’ Stoeckner removed_email_address@domain.invalid:

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).

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


#4

Robert K. scribbled on Wednesday 08 Mar 2006 23:40:

Kind regards

robert


Have a look: http://www.flickr.com/photos/fussel-foto/

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: