[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:37

From: Shugo Maeda <shugo ruby-lang.org>
Date: Wed, 19 May 2004 12:14:01 +0900
Subject: [yarv-dev:37] Re: how to initialize ruby environment?

前田です。

At Wed, 19 May 2004 11:59:25 +0900,
matz ruby-lang.org (Yukihiro Matsumoto) wrote:
> | 関係ないんですけど、load(file, true) はファイルを渡しますが、
> |これに文字列を渡して priv=true 環境で eavl するようなことはし
> |ないのでしょうか。
> 
> とりあえず考えてませんでした。

かつて提案しましたが、名前が決らず却下されました:(

>   module.instance_eval{...}
> 
> と大差ないですから(正確には内部で定義されたクラスにwrapperが
> インクルードされる点が違う)。

この違いがけっこう大きいと判断して、mod_rubyでは、

static VALUE f_eval_string_wrap(VALUE self, VALUE str)
{
    if (rb_safe_level() >= 4) {
	Check_Type(str, T_STRING);
    }
    else {
	Check_SafeStr(str);
    }
    return rb_eval_string_wrap(StringValuePtr(str), NULL);
}

void rb_init_apache()
{
    ...
    rb_define_global_function("eval_string_wrap", f_eval_string_wrap, 1);
    ...
}

のようにeval_string_wrapをRubyレベルで見えるようにしておいて、

      binding = eval_string_wrap("binding")
      eval(str, binding, filename)

なんてことをしていたりします。

-- 
前田 修吾

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

        35 2004-05-18 23:57 [ko1 atdot.net       ] how to initialize ruby environment?     
        36 2004-05-19 11:59 ┗[matz ruby-lang.org  ]                                       
->      37 2004-05-19 12:14  ┣[shugo ruby-lang.org ]                                     
        39 2004-05-19 20:14  ┃┗[ko1 atdot.net       ]                                   
        38 2004-05-19 20:12  ┗[ko1 atdot.net       ]