Ruby 1.9 - equivalent of ruby_run()?

Hello,

In Ruby 1.8, I was able to start the Ruby interpreter using ruby_run():

char* file = “foobar.rb”;
ruby_script(file);
rb_load_file(file);
ruby_run(); // start the interpreter

In Ruby 1.9, there is a ruby_run_node() function instead, but I have not
been able to use it successfully. I tried:

char* file = “foobar.rb”;
ruby_script(file);
rb_load_file(file);
ruby_run_node(NULL); // start the interpreter

And I also tried:

char* file = “foobar.rb”;
ruby_script(file);
rb_load_file(file);
ruby_run_node(ruby_options(0, NULL)); // start the interpreter

And I also tried:

char* argv[] = {“foobar.rb”};
ruby_run_node(ruby_options(1, argv)); // start the interpreter

None of these worked; the interpreter would immediately dump core.

What is the correct way to do this?

Thanks for your consideration.

Suraj K. wrote:

In Ruby 1.9, there is a ruby_run_node() function instead, but I have not
been able to use it successfully. I tried:

char* file = “foobar.rb”;
ruby_script(file);
rb_load_file(file);
ruby_run_node(NULL); // start the interpreter

I hunted around in the Ruby 1.9.0 source code and found an example in
load.c. The solution is to pass the return value of rb_load_file() to
ruby_run_node():

char* file = “foobar.rb”;
ruby_script(file);
void* node = rb_load_file(file);
ruby_run_node(node); // start the interpreter