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…

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs