[Ruby] (no subject)

Kirill Shutemov kirya85 at mail.ru
Tue Mar 4 21:51:50 MSK 2003


On Tue, 4 Mar 2003 09:53:56 +0800
Sergei Dolmatov <sergei at dolmatov.dsb.ru> wrote:

> On Mon, Mar 03, 2003 at 10:11:47PM +0300, Кирилл Шутемов wrote:
> > On Mon, 3 Mar 2003 17:41:37 +0800
> > Sergei Dolmatov <sergei at dolmatov.dsb.ru> wrote:
> > 
> > > On Sun, Mar 02, 2003 at 11:18:25AM +0200, Kirill Shutemov wrote:
> > > > Привет всем,
> > > >
> > > > Мне нужен внутрений скриптовый язык для моего проекта. Нужно, чтобы из скриптов можно
> > > > было вызывать некоторые функции основной программы(написанной на C++). Очень хотелось бы
> > > > чтобы этим языком был Ruby. Как это можно реализовать?
> > >
> > > Насчет С++ не знаю, а, скажем, С реализуется достаточно просто - смотреть
> > > внимательнее на Extending and embedding Rubby в Pragmatic Programmers
> > > Guide.
> > 
> > Я вставил в место, где должен выполняться скрипт следующий текст:
> >   ruby_init();
> >   ruby_script("embedded");
> >   rb_load_file("test.rb");
> >   ruby_run();
> > скрипт test.rb правильно отрабатывает, но после этого программа сразу завершается. Как c этим бороться?
> 
> Обсуждение этого было в ruby-talk@, к сожалению, просмотрел этот тред
> довольно поверхностно, поэтому за точность не ручаюсь. Но насколько я
> понял - это нормальное поведение ruby_run(), и предлагалось использовать
> rb_eval().

void goScript(string name)
{
  ifstream file((char*)name.c_str());
  string buf, str;

  if(!file) 
    cout << Cannot open script file \"" << name  << "\".";
 
  ruby_init();

  while(!file.eof())
    {
      getline(file,buf);
      str.append(buf+'\n');
    }
  rb_eval_string(str.c_str());
}
Что-то вроде этого?



More information about the Ruby mailing list