Hi,
In message "[ruby-talk:04481] Invoking an extension after compilation"
on 00/08/16, Dave Thomas <Dave / thomases.com> writes:
|I want to write a C extension module which runs automatically after a
|source file has been read, but before it executes. I tried putting the
|following in the Init_ function:
|
| code = NEW_CALL(NEW_CONST(rb_intern("Stuff")), rb_intern("doIt"), 0);
|
| ruby_eval_tree_begin = block_append(ruby_eval_tree_begin, code);
|
|
|However, this didn't work, because require_libraries in ruby.c saves
|and restores the value in ruby_eval_tree_begin.
I'm not sure what did you want to do, but I guess
rb_eval_string("Stuff.doIt");
or
rb_funcall(rb_cStuff, rb_intern("doIt"), 0);
at the end of Init_ function may work for you.
FYI, registering END block is harder.
Use rb_set_end_proc(void (*func)(), VALUE data);
matz.