はじめまして OJです。

rb_load の wrap の挙動について質問です。

Test1.rb
----
Test1 = 1
----

Test2.rb
----
require "Test1"
Test2 = 2
----

Test3.rb
----
begin
  Test1
  puts "Test1 is defined"
rescue NameError
  puts "Test1 is undefined"
end
begin
  Test2
  puts "Test2 is defined"
rescue NameError
  puts "Test2 is undefined"
end
----

C ソースファイル
----
ruby_init();
rb_load(rb_str_new2("Test2.rb"), 1);
rb_load(rb_str_new2("Test3.rb"), 1);
----

実行結果
----
Test1 is defined
Test2 is undefined
----

これは、こういうものなのでしょうか?
Rubyを埋め込んだソフトからスクリプトを実行し、その結果が以後の動作に
全く影響を与えないようにしたいのですが。

-- 
OJ (Yoji Ojima) / mailto:oj / v7.com