Какой безопасный способ переопределить методы в основных классах, таких как File, String и т. Д. Я ищу реализацию чего-то похожего на Java Security Manager в (J) Ruby.
Я ищу способ переопределить метод, сначала посмотрев, какой класс / скрипт вызвал этот метод, и если этот класс / скрипт принадлежит списку некоторых занесенных в черный список классов (которые я отслеживаю), я хочу поднять исключение, если вызывающий класс принадлежит классу, не занесенному в черный список, тогда разрешите операцию. что-то вроде:
class String
alias_method :old_length, :length
def length
if(#nowHowDoIGetTheCallingClass)
raise "bad boy"
else
old_length
end
end
Я пробовал это в JRuby, но это работает только альтернативно. Один раз вызывается новый метод длины, а в следующий раз вызывается старый метод длины. Я думаю, alias
не работает должным образом в JRuby! >. <</p>