如何从Ruby C VM中加载的脚本中获取基准?

如何从Ruby C VM中加载的脚本中获取基准?,c,ruby,C,Ruby,我有一个Ruby虚拟机集,如下所示: int ruby_state = 0; ruby_init(); // some rb_define rb_protect(rb_require, (VALUE)"./script.rb", &ruby_state); ruby_cleanup(ruby_state); require 'benchmark' 我想在我的C函数上做一些基准测试。我试图在script.rb中添加require,如下所示: int ruby_state = 0;

我有一个Ruby虚拟机集,如下所示:

int ruby_state = 0;
ruby_init();

// some rb_define

rb_protect(rb_require, (VALUE)"./script.rb", &ruby_state);
ruby_cleanup(ruby_state);
require 'benchmark'
我想在我的C函数上做一些基准测试。我试图在
script.rb
中添加require,如下所示:

int ruby_state = 0;
ruby_init();

// some rb_define

rb_protect(rb_require, (VALUE)"./script.rb", &ruby_state);
ruby_cleanup(ruby_state);
require 'benchmark'
我犯了一个错误:

script.rb:1:in `require': cannot load such file -- benchmark (LoadError)

如何从该脚本中获取基准测试?

我找到了两种方法来实现这一点

安装了Ruby之后 就在
ruby\u init()
之后,我需要添加
ruby\u init\u loadpath()

没有安装Ruby 这一次,有点棘手。在所需的第一个ruby脚本的开头,我们需要添加以下行:

$LOAD_PATH.unshift File.expand_path(File.join(__dir__, "/gems/"))
其中
“/gems/”
是存储gems的子文件夹。也许也可以通过C api实现这一点,但它可能与Ruby中的一些
rb_funcall
rb_intern
相同,因为Ruby源代码中与加载路径相关的api是
static