From dd221019ccef3177ba78adb78b9aa42411ea7bc1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 16 Jan 2014 17:04:18 -0500 Subject: [PATCH] correct initialization of Ruby interpreter --- main.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 8993de7..a75a24a 100644 --- a/main.c +++ b/main.c @@ -1,10 +1,32 @@ +#include #include "ruby.h" +RUBY_GLOBAL_SETUP + +static VALUE eval(const char * string) +{ + int state; + VALUE v = rb_eval_string_protect(string, &state); + if (state != 0) + { + fprintf(stderr, "rb_eval_string_protect() returned state %d!\n", state); + rb_set_errinfo(Qnil); + } + return v; +} + int main(int argc, char *argv[]) { - ruby_init(); - ruby_init_loadpath(); - VALUE v = rb_eval_string("3 + 8"); - printf("v: %d\n", FIX2INT(v)); + ruby_sysinit(&argc, &argv); + { + RUBY_INIT_STACK; + ruby_init(); + ruby_init_loadpath(); + VALUE v = eval("3 + 8"); + printf("v: %d\n", FIX2INT(v)); + eval("File.open('out.txt', 'w') {|fh| fh.puts 'hello!'}"); + eval("puts 'Hello, World!'"); + ruby_finalize(); + } return 0; }