From: Tanaka Akira Date: 2005-12-28T18:53:26+09:00 Subject: [ruby-dev:28146] calling a method defined in $SAFE=4 ふと、1.9 で、 % ./ruby -ve ' Thread.new { $SAFE = 4 o = Object.new class << o define_method(:m) { p $SAFE } end o }.value.m ' ruby 1.9.0 (2005-12-28) [i686-linux] 0 というように、$SAFE=4 で定義されたメソッドが外から呼んだ時に $SAFE=0 で動作することに気がついたのですが、これは % ruby-1.8 -ve ' Thread.new { $SAFE = 4 o = Object.new class << o define_method(:m) { p $SAFE } end o }.value.m ' ruby 1.8.4 (2005-12-27) [i686-linux] -e:6:in `define_method': Insecure: can't define method (SecurityError) from -e:2:in `value' from -e:2 という 1.8 の挙動とは違うのですが、どういうことなんでしょう か。 -- [田中 哲][たなか あきら][Tanaka Akira]