查找构成Ruby类的文件

时间:2010-11-16 15:47:54

标签: ruby

在Ruby中,有没有办法确定加载和定义/修改了哪个文件

1 个答案:

答案 0 :(得分:3)

我认为没有一种简单的方法可以正确地执行此操作,但作为1.9中的近似值,您可以找到该类中所有方法的source_location

class Class
  def source_files
    methods.collect { |method_name|
      method(method_name).source_location[0] # just the filename, not the line number
    } |
    instance_methods.collect { |method_name|
      instance_method(method_name).source_location[0]
    }
  end
end

这也将为您提供定义从超类或包含的模块继承的方法的文件,我不确定您是否需要。除了在其中定义方法之外,还有其他方法可以修改类,但这并没有检测到它们,因此它并不完美。