【发布时间】:2011-03-10 05:46:13
【问题描述】:
在文件、字符串等核心类中重新定义方法的安全方法是什么。我正在寻找实现类似于 (J)Ruby 中的 Java 安全管理器的东西。
我正在寻找一种方法来重新定义方法,首先查看哪个类/脚本调用了此方法,以及该类/脚本是否属于我想提出的一些列入黑名单的类(我跟踪)的列表一个例外,如果调用类属于非黑名单类,则允许该操作。类似:
class String
alias_method :old_length, :length
def length
if(#nowHowDoIGetTheCallingClass)
raise "bad boy"
else
old_length
end
end
我在 JRuby 中尝试过,但这只能作为替代方法。一次调用新的长度方法,下一次调用旧的长度方法。我猜alias 在 JRuby 中不能正常工作! >.
【问题讨论】: