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?

···

--
Posted via http://www.ruby-forum.com/.

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

Alex Maccaw 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?

--
Posted via http://www.ruby-forum.com/.

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).

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

···

On Aug 10, 2009, at 14:52, Alex Maccaw wrote:

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?
--
Posted via http://www.ruby-forum.com/.

Eric Hodel 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...

···

On Aug 10, 2009, at 14:52, Alex Maccaw wrote:

--
Posted via http://www.ruby-forum.com/.