From: Shugo Maeda Date: 2006-05-29T17:27:04+09:00 Subject: [ruby-dev:28671] Re: load_to(file, mod) 前田です。 Hidetoshi NAGAI wrote: > やりたいのは,$SAFE == 4 で load(path, true) したスクリプト中の > load(path2) を同じ無名モジュール中で評価したいというものです. > さらには,load() の外から load 内の監視もしたいと思ってます. > > load メソッドをくるんでやることである程度までは行けるのですが, > 無名モジュールが取得できなくてだめだったり, > それを避けると self が main ではなくなってしまったりで頭を悩ませてます. > > mod.module_eval(File.read(path)) の File.read(path) を > うまくくるんでやって,self が mod になってしまう点は > 妥協するしか方法はないのでしょうか. generate_binding.rbという名前で ----- ここから ----- ここから ----- ここから ----- ここから ----- $binding = binding ----- ここまで ----- ここまで ----- ここまで ----- ここまで ----- という内容のファイルを用意しておいて、 ----- ここから ----- ここから ----- ここから ----- ここから ----- def generate_binding Thread.critical = true begin load("generate_binding.rb", true) return $binding ensure Thread.critical = false end end b = generate_binding # 1回目の実行 eval("def hello; puts 'hello world'; end", b) # 2回目の実行 eval("hello", b) ----- ここまで ----- ここまで ----- ここまで ----- ここまで ----- という手を使うのはどうでしょうか。 -- 前田 修吾