我正在研究捕获基类上定义的每个方法,查找它定义的文件,然后根据它做一些逻辑.
我目前有:
# Defined in some file class Subclass < Base def foo end end class Base self.method_added(method) # self is a given subclass (Subclass) # This doesn't work. :( self.method(method).source_location end end
我希望能够找到该方法的源位置.
我可以这样做:
self.new.method(source).source_location
但是,不要认为我应该实例化任何东西以使其工作.
有任何想法吗?
解决方法
您可以使用方法
Module#instance_method获取类的实例方法:
instance_method(method).source_location # `self` is unnecessary,it is added implicitly # => ["/home/alex/Projects/test/test.rb",23]
instance_method(symbol) → unbound_method
Returns an UnboundMethod representing the given instance method in mod.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。