Ruby 如何统计一个 Module 中所有的方法并输出方法所在的文件名和行数

neverlandxy_naix · 2013年01月29日 · 最后由 neverlandxy_naix 回复于 2013年01月29日 · 2959 次阅读

有一个需求,需要统计一个 module 中所有的方法名,并输出方法所在的文件名和其所在的行数。这个 module 引用了很多其他的 module,需要把其他 module 的方法也输出。

我的思路是建一个白板类,然后 include 这个 module,在输出其方法,但是不知道怎么输出方法所在的文件名和行数,麻烦高手赐教^_^

class FindMethods

  instance_methods.each do |m|
    undef_method m unless m.to_s =~ /^__|^methods/
  end

  include Module_Mymodule
end


my_methods = FindMethods.new
my_methods.methods.each do |m|
  puts m
  next if m =~ /^__|^methods/
end

source_location 是不是你想要的。

#1 楼 @zlx_star 谢谢,正是我想要的,呵呵,白板类改一下然后用 source_location 方法就行了

ruby 1.9+ 直接使用 source_location 方法 ruby 1.8+ 使用ruby18_source_location这个 gem

需要 登录 后方可回复, 如果你还没有账号请 注册新账号