From: Hidetoshi NAGAI Date: 2003-11-06T07:08:07+09:00 Subject: [ruby-list:38767] Re: ruby-dev summary 21730-21822 /draft 永井@知能.九工大です. 私は英語がままならぬ人なので,勉強になります. で,仕様に関する質問が混じっているようですので それについての返答です. From: Hiroharu Sugawara Subject: [ruby-list:38762] Re: ruby-dev summary 21730-21822 /draft Date: Thu, 6 Nov 2003 03:37:18 +0900 Message-ID: <20031106025336.848E.SUGAWAH@attglobal.net> > VARNAMEが環境変数でない場合は、どうなるのでしょうか? VARNAME が環境変数として定義されていない文字列でも アクセスの可否は設定されます. 過去との互換性のため,現在はデフォルトで「アクセス可」になってますから, deny_insecure_ref でアクセス不可に設定しない限りは 「アクセス可」としての返答が得られます. なお,{deny|allow}_insecure_ref(name) の name に指定する 文字列は,その時点で環境変数として存在している必要はありません. # 定数の方についても同じです. # 設定する時点で存在していることは必用条件ではありません. 例えば,HOGE という環境変数が存在しない時点で ENV.deny_insecure_ref("HOGE") としておくと ENV.insecure_ref_denied?("HOGE") には true を返しますし, その後で HOGE という環境変数を作ったとしても, その環境変数は「アクセス不可」の設定が正しく適用されます. # いつの時点になるかはわかりませんが,セキュリティを考えて # 将来はデフォルトで「アクセス不可」と変更になるはずです. # この点を考えると,現在のデフォルトかどちらかを確認するような # メソッドがあってもいいのかもしれません. したがって, From: "Akinori MUSHA" Subject: [ruby-list:38764] Re: ruby-dev summary 21730-21822 /draft Date: Thu, 6 Nov 2003 04:45:07 +0900 Message-ID: <86llquob0d.knu@iDaemons.org> >  あと、リストを得るという機能は、 > > ENV.select { |var,| ENV.restricted?(var) } > > ではだめかしら?よく使うのならメソッドにした方がいいでしょうが。 としてしまうと,その時点で存在していない環境変数についての設定が 参照されないので不足ではないかと思います. # もちろん,デフォルトになっている側 (現時点では「アクセス可」の # リスト) は存在する環境変数しか参照できないのですが. で,ちょっと引用が前後しますが, >  で、メソッド名はやはりわかりにくいですね。deny_insecure_ref'ed > ってすごい動詞だ。 (^^; >  代わりに > ENV.restrict(envvar) > ENV.derestrict(envvar) > ENV.restricted?(envvar) > ではどうでしょう。(derestrict は一般的な単語じゃないかも) "restrict" は一時は使おうとして止めた記憶があるんですが, なぜそうしたのかは忘れてしまいました.(^_^; # 理由らしい理由はなかったかも... -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp