Hi,

I'm working on a small scripting support for a C application I wrote.
The idea is to let users execute script functions they define and
register. To control things in the main application there are two
classes defined with some methods (all in C). Actually it works, I scan
the scripts directory for scripts, load them into ruby with rb_require
and call register_functions for that file. The register_functions will
call a global defined function register_function (which is defined in C)
to register a method.

Now having done this, when the user wants to execute a certain script
function I rb_require the appropriate script file and call the function.
This works for now, but there are things I'm doing wrong.

For instance. Its not nessescary for ruby to stay alive after a script
is executed. I'm willing to create a Ruby 'world' every time a script
has to run because scripts are just add-on, small and non time
consuming. Now I call ruby_init every time a script needs to be executed
and ruby_finalize after it executes. Problem is that ruby doesn't get
cleaned. All code stays and I rather would not have this. I could try to
fork the process and call ruby from within the child but I don't know
what will happen with the callback functions for the two classes I
created in C. Am I thinking in the wrong direction here or should there
be something like ruby_clear? 

The second problem is that it works now. It actually does, but I guess
it isn't the best way to do things. Well thats not the problem, the
problem is that whenever I call puts or print to write something to
stdout my application crashes (SEGVT) on rb_func_undef_alloc (or
something like that). Could this be caused by using threads?

Jesse