Rubyリファレンス: Home

untrust (Object)

Edit   History

Ruby 1.9

標準クラス・モジュール > Object > untrust

obj.untrust

untrustメソッドは、オブジェクトを信頼されない状態に変えます。戻り値はレシーバ自身です。

オブジェクトが信頼されない状態かどうかを調べるには、untrusted?メソッドを使います。信頼される状態に戻すにはtrustメソッドを使います。

次の例では、文字列s1を信頼されない状態にしています。文字列s2は信頼される状態のままです。セーフレベルを4に上げて破壊的なメソッド(レシーバ自身を変更するメソッド)を呼び出すと、s1.downcase!は成功し、s2.upcase!では例外SecurityErrorが発生します。セーフレベル4では信頼されないオブジェクトは変更できますが、信頼されるオブジェクトは変更できないためです。

信頼状態とセーフレベルについて詳しくは、セキュリティの説明をご覧ください。

s1 = "Hello"
s1.untrust
s2 = "World"
 
$SAFE = 4
s1.downcase!
s2.upcase!
untrust.rb:7:in `upcase!': Insecure: can't modify string (SecurityError)
        from untrust.rb:7:in `<main>'

なお、niltruefalse、小さい整数(Fixnum)、シンボル(Symbol)は信頼されない状態にできません。untrustメソッドを実行してもエラーにはなりませんが、untrusted?の結果はfalseになります。

セーフレベル

セーフレベルが4のときは、untrustメソッドは使えません(例外SecurityErrorが発生します)。

関連項目

外部リンク