0

我在 Rubysource 中寻找时间,我正在尝试用 C++ 扩展 Ruby。我的问题是,因为很难在 Rubycode 中找到一些东西:如何从内存而不是文件中解释 ruby​​-code。我的意思是,我想从内存中解释我自己的加密 ruby​​ 代码。我当前用于解释 ruby​​ 文件的代码如下所示:

bool Ruby::rb_load_file(char* szFilename)
{
    ::ruby_script(szFilename);
    int ret = 0;
    VALUE value;
    rb_protect((VALUE(*)(VALUE))rb_require, (VALUE)szFilename, &ret);
    value = ::rb_gv_get("$!");
    value = ::rb_funcall(value, rb_intern("to_s"), 0);
    if (rb_string_value_cstr(&value)[0] != '\0')
    {
        ::rb_eval_string_protect("puts $!, $@", &ret);
        return false;
    }
    return true;
}

但我不想从我的硬盘加载我的 ruby​​ 文件,而是从我的记忆中加载(遵守 utf-8 编码,因此 rb_eval_string 将不起作用)。一种更好的思考方法:我想将我的 ruby​​ 代码解释为 c 字符串,并遵守 utf-8 编码 inclusive bom。

4

0 回答 0