Ruby 1.9 evaled from C doesn't load libraries properly

Ok, so I’m using C++ in a project called Titanium and trying to evaluate
Ruby (1.9).

The code looks something like this:

ruby_init();
ruby_init_loadpath();
rb_set_safe_level(0);
      ruby_script("ruby");
rb_eval_string_protect(code, &error);

So, this can parse Ruby fine, the only issue is when I require the mutex
lib (needed by Rubygems).

The error I get is: undefined method `synchronize’ for #Mutex:0x1f8cf4

It looks like the mutex class (which is written in C) isn’t getting
loaded properly. Anybody got any ideas as to why?

I should add that other libraries written in C, like StringIO, work
fine.

Alex M. wrote:

Ok, so I’m using C++ in a project called Titanium and trying to evaluate
Ruby (1.9).

The code looks something like this:

ruby_init();
ruby_init_loadpath();
rb_set_safe_level(0);
      ruby_script("ruby");
rb_eval_string_protect(code, &error);

So, this can parse Ruby fine, the only issue is when I require the mutex
lib (needed by Rubygems).

The error I get is: undefined method `synchronize’ for #Mutex:0x1f8cf4

It looks like the mutex class (which is written in C) isn’t getting
loaded properly. Anybody got any ideas as to why?

On Aug 10, 2009, at 14:52, Alex M. wrote:

rb_eval_string_protect(code, &error);

So, this can parse Ruby fine, the only issue is when I require the
mutex
lib (needed by Rubygems).

RubyGems requires thread by itself, why are you doing it? Why not
require ‘rubygems’?

Eric H. wrote:

On Aug 10, 2009, at 14:52, Alex M. wrote:

rb_eval_string_protect(code, &error);

So, this can parse Ruby fine, the only issue is when I require the
mutex
lib (needed by Rubygems).

RubyGems requires thread by itself, why are you doing it? Why not
require ‘rubygems’?

When I require ‘rubygems’ I get that error - I traced it back to the
Mutex lib in the thread lib.
In other words, rubygems won’t work.

Also, peculiarly, if I stub out the schedule method on Mutex like this:

require ‘thread’
class ::Mutex
def synchronize
yield
end
end

Then rubygems seems to load fine, but any other gems, such as
activesupport won’t load through rubygems.

It’s really odd…