From: Takashi Kanai Date: 2003-10-17T00:28:03+09:00 Subject: [ruby-list:38592] cgi.rbのremove_const  こんにちは、金井です。 cgi.rbを使ってWEBアプリを開発しています。 RxCGI という名前の、CGIのサブクラスを作成しているのですが、次のような ワーニングが出ます。 環境は Win2000SP4/Apache2.0.47/ruby1.8.0ですが、1.6.8でも同様です。 C:/usr/local/lib/ruby/1.8/cgi.rb:1963:in `class_eval': (eval):1:in remove_const': constant RxCGI::CGI_PARAMS not defined (NameError) from C:/usr/local/lib/ruby/1.8/cgi.rb:1963:in `class_eval' from C:/usr/local/lib/ruby/1.8/cgi.rb:1963:in `initialize' from C:/usr/local/lib/ruby/1.8/cgi.rb:1961 これは、次のような記述で引っかかっています。 self.class.class_eval("remove_const(:CGI_PARAMS)") self.class.class_eval("remove_const(:CGI_COOKIES)") self.classはこの場合はCGIではなくRxCGIだからCGI_PARAMという定数は定義 されていないことになるわけです。そこで次のように書き換えたところ、 ワーニングは出なくなりました。 CGI.class_eval("remove_const(:CGI_PARAMS)") CGI.class_eval("remove_const(:CGI_COOKIES)") これで問題なく動作しているのですが、今ひとつ自信が持てません。 ・上記のような修正で正しいのか ・そもそもCGIのサブクラスを作るという使い方は想定されていないのか どうしたものでしょうか。 -- 金井 隆 (KANAI Takashi) kanai@nn.iij4u.or.jp