是否有可能找到在Ruby(MRI)中定义方法的文件/行?

时间:2010-06-19 13:24:36

标签: ruby

Ruby肯定会在运行时存储这些信息,因为它打印在堆栈跟踪中 - 但似乎没有任何明显的方法来访问它。有解决方案吗? (除了点击源代码,或者将无意义的参数传递给方法以获得堆栈跟踪)

2 个答案:

答案 0 :(得分:3)

在Ruby 1.9中,您有Method#source_location:

require 'yaml'    
p YAML.method(:load).source_location => ["C:/Ruby19/lib/ruby/1.9.1/yaml.rb", 132]

似乎有一个请求将source_location反向移植到1.8(http://redmine.ruby-lang.org/issues/show/2180),但我不确定是否/何时会发生这种情况。

答案 1 :(得分:1)

这是我能找到的最好的:How to find where a method is defined at runtime?