On Thu, 29 Jan 2004 00:33:55 +0900
In article <20040129002945.3BCD.MATUNAMI / matunami.net>
[[ruby-ext:02265] 組み込みRubyの再初期化]
まつなみ <matunami / matunami.net> wrote:

> Rubyを自分のWindowsアプリケーションに組み込もうと考えています。
> 
>  実行したいRubyのプログラムを各行を
> 
>  rb_protect(...)
> 
> で実行しております。一度実行した跡に、再度別のRubyのプログラムを
> 各行実行すると当然以前の評価したものが残ってしまいます。一度実行した後に
> 終了するために、ruby_finalizeではスレッドが残ってしまいますし、
> 終了されても困るので、rb_exitを呼ぶわけにも参りません。
> 
> そこで、rb_load_protect で行えば問題ないのですが、Rubyの
> プログラムを一行一行ステップ実行を行うことができません。
> そこで再初期化する方法はあるのでしょうか? また別の方法があるのでしょうか?

現在の Ruby の実装は組み込みに関してあまり良くないので,いろいろ
と汚い手を使う必要があります。時には ruby-dev に仕様変更の提案も
します。私が ruby-dev に出した提案の殆どはこれのため (^^;

Rite (Ruby2.0) では組み込み環境の改善が目標の一つになっているの
で,どんどん組み込み時の問題点を見つけると良いと思います。


> Rubyを組み込んだアプリケーションでRubyのプログラムを各行デバッガのように
> 評価したい場合はどのようにするのがいいのでしょうか?

SCRIPT_LINES__ と set_trace_func を使うのではないでしょうか。
see debug.rb


―[ Tietew ]――――――――――――――――――――――――――
 メ : tietew / tietew.net / tietew / raug.net / tietew / masuclub.net
ホペ: http://www.tietew.net/     Tietew Windows Lab.
      http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA