ruby – 在拥有Class时查找方法的source_location

我正在研究捕获基类上定义的每个方法,查找它定义的文件,然后根据它做一些逻辑.

我目前有:

# 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.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...