>>>>> "B" == Basile STARYNKEVITCH <basile-news / starynkevitch.net> writes:

B> // file testemb_ruby.c

 write it like this

svg% cat testembed_ruby.c 
#include <stdio.h>
#include <stdlib.h>
#include <ruby.h>

int execute(int argc, char **argv)
{
    int state = 0;
    char *script = 0;
    char *cmd = 0;
    VALUE res = 0;

    if (argc > 1)  {
        script = argv[1];
        printf ("loading ruby script %s\n", script);
        ruby_script (script);
        rb_load_protect (rb_str_new2(script), Qfalse, &state);
        printf ("after load_file errinfo=");
        rb_p (ruby_errinfo);
    }
    if (argc > 2)
        cmd = argv[2];
    else
        cmd = "sayhello(\"world\")";
    printf ("before eval %s\n", cmd);
    res = rb_eval_string_protect (cmd, &state);
    printf ("after eval state=%d res=", state);
    rb_p (res);
    printf ("after eval errinfo=");
    rb_p (ruby_errinfo);
    return state;
}

int main (int argc, char **argv)
{
    ruby_init ();
    ruby_init_loadpath ();      /* to find the libraries */
    return execute(argc, argv);
}                               // end of main
svg% 


svg% testembed_ruby myscript.rb
loading ruby script myscript.rb
loaded myscript.rb
after load_file errinfo=nil
before eval sayhello("world")
hello world
after eval state=0 res=#<IO:0x400a0258>
after eval errinfo=nil
svg% 



Guy Decoux