编辑:对不起,我误解了你的问题。要查找哪个类或模块定义了一个方法,请使用
你们知道是否有可能了解该方法定义在哪个类中吗?
例如,to_a可能在Enumerable和Numeric或其他地方定义。是否有一个函数,像类对象:
=> aaa=[1,2,3,4,5]
=> aaa.class
=> Array
是否有像"defined_in?"这样的方法来了解方法定义在哪个类中?
=> to_a.defined_in?
在Ruby 1.9及以上版本中,您可以使用Method#source_location
。在Ruby 1.8中,有一个gem ruby18_source_location来支持这个功能。
请参阅https://stackoverflow.com/a/13015691/260122和对同一问题的其他答案,以获得有关分析源代码的进一步方法的良好讨论,包括调试器。
编辑:对不起,我误解了你的问题。要查找哪个类或模块定义了一个方法,请使用
Method#owner
。如:> %w(a a a).method(:to_a).owner
=> Array