在Ruby中,有没有办法确定加载和定义/修改了哪个文件?
答案 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
这也将为您提供定义从超类或包含的模块继承的方法的文件,我不确定您是否需要。除了在其中定义方法之外,还有其他方法可以修改类,但这并没有检测到它们,因此它并不完美。