From: Kouhei Sutou Date: 2008-03-19T23:49:19+09:00 Subject: [ruby-dev:34093] 拡張ライブラリ初期化中でのmodule_eval 須藤です。 拡張ライブラリを初期化しているとき(Init_XXXを呼んでいるとき) にmodule_evalを呼ぶとトップレベルで評価されている気がします。 a.c: #include void Init_a(void) { rb_funcall(rb_cArray, rb_intern("module_eval"), 1, rb_str_new2("def xxx; yyy; end")); } extconf.rb: require 'mkmf' create_makefile("a") 実行例: % ruby19 extconf.rb % make % ruby19 -v -r a -e 'xxx' ruby 1.9.0 (2008-03-19 revision 0) [x86_64-linux] (eval):1:in `xxx': undefined local variable or method `yyy' for main:Object (NameError) from -e:1:in `
'