У меня есть следующий код Ruby:
Testcase.rb:
filename = "/absolute/path/to/Untrusted.rb"
thread = Thread.new do
$SAFE = 4
Kernel::load(filename, true)
end
thread.join
Untrusted.rb
#Untrusted code
puts "Untrusted!"
Однако я получаю сообщение об ошибке при попытке запустить Testcase.rb:
/Volumes/Data/Users/mike/Desktop/Testcase.rb:4:in `write': Insecure operation `write' at level 4 (SecurityError)
from /Volumes/Data/Users/mike/Desktop/Testcase.rb:7:in `join'
from /Volumes/Data/Users/mike/Desktop/Testcase.rb:7
Удаление $SAFE=4
решает проблему, но я хочу иметь возможность безопасно выполнять ненадежный код. Любые идеи о том, почему это не работает?