Расширяя Ruby с C ++, как можно требовать rb-файл из памяти?

Я роюсь в поисках времени в Rubysource и пытаюсь расширить Ruby с помощью C ++. Мой вопрос, потому что действительно трудно найти что-то в Ruby-коде: как я могу интерпретировать 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-string с соблюдением инклюзивного кода кодировки utf-8.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector