e$B31$H$$$$$^$9!#e(B
e$B0lEY!"$^$D$b$H$5$s$K$O;d?.$G<ALd$7$?$N$G$9$,!"$;$C$+$/$J$N$Ge(BMLe$B$K$bEj$2$^$9!#e(B
Proc#calle$B$He(Byielde$B$G!“e(BProce$B$,<B9T$5$l$k:]$Ne(B$SAFEe$B$,0[$J$j$^$9!#e(B
e$B$^$D$b$H$5$s$Oe(BProc#calle$B$N5sF0$,0U?^$7$?$b$N$G$”$k!"$H$N$3$H$G$7$?!#e(B(e$B$"$C$F$^$9$+e(B?>e$B$^$D$b$H$5$se(B)
yielde$B$N5sF0$re(BProc#calle$B$HB7$($kM=Dj$O$"$j$^$9$+e(B?
e$B%9%l%C%I$r:n$C$Fe(B$SAFE =
4e$B$G$J$K$+$r<B9T$9$k$N$Ke(Byielde$B$r$h$/;H$C$F$$$?$N$G$9$,!“e(B
yielde$B$be(BProc#calle$B$N5sF0$KB7$($k$H$9$k$H!”$A$g$C$HLLE]$G$9!#e(B
$SAFE=4e$B$N%9%l%C%I$+$ie(BProc#calle$B$7$?>l9g!"e(BProce$B$r:n$C$?%3%s%F%-%9%H$Ne(Bsafe_levele$B$Ge(B
Proce$B$,<B9T$5$l$k$h$&$G$9!#e(Byielde$B$9$k>l9g$K$O!"e(Bsafe_levele$B$,0z$-7Q$,$l$^$9!#e(B
e$B$3$l$O0U?^$7$?F0:n$G$7$g$&$+!)e(B
e$B$J$s$H$J$/%P%0$J5$$,$7$^$9!#e(B
e$BNc$($P$3$s$J%9%/%j%W%H$G<B83$G$-$^$9!#e(B
four_proce$B$NJ}$Oe(B$SAFE=4e$B$N$O$:$J$N$KI8=`=PNO$K0u;z$G$-$^$9!#e(B
safe.rb
def four_proc(&block)
Thread.new { $SAFE = 4; block.call }.join
end
def four_yield
Thread.new { $SAFE = 4; yield }.join
end
four_proc { p :proc }
four_yield { p :yield }
e$B<B9T7k2Le(B
cinq:~/develop/labo/ruby/misc mas$ ruby safe.rb
:proc
safe.rb:10:in write': Insecure operation
write’ at level 4
(SecurityError)
from safe.rb:6:in join' from safe.rb:6:in
four_yield’
from safe.rb:10