[Ruby] (no subject)

Eugene Scripnik Eugene.Scripnik at itgrp.net
Tue Mar 4 12:31:32 MSK 2003


Кирилл Шутемов wrote:

> Я вставил в место, где должен выполняться скрипт следующий текст:
>   ruby_init();
>   ruby_script("embedded");
>   rb_load_file("test.rb");
>   ruby_run();
> скрипт test.rb правильно отрабатывает, но после этого программа сразу завершается. Как c этим бороться?
Дело в том, что как уже написали ruby_run() завершает выполнение 
программы. Он в принципе не нужен. Достаточно перенести весь выполняемый 
код в отдельную функцию (чтоб при запуске GC он смог нормально почистить 
  неиспользуемые объекты) и добавить ruby_init_loadpath() (чтоб можно 
было использовать стандартные библиотеки):

void start_my_ruby() {
     rb_load_file("test.rb");
     // Остальной код
}

int main(...) {
     ruby_init();
     ruby_script("embedded");
     ruby_init_loadpath();
     start_my_ruby();
     return 0;
}

Если будет использоваться только rb_load_file и в main не будут 
создаваться ruby-объекты (VALUE), то можно обойтись и без start_my_ruby.

-- 
Eugene Scripnik
IT Group
Software Architect
Tel./Fax +380 (372) 58-43-10
email: Eugene.Scripnik at itgrp.net
http://www.itgrp.net/




More information about the Ruby mailing list