好吧,我搜索了这个问题,但我找不到能给它一个明确解释的问题。 我想知道是否有一种在运行时检测加载的模块路径的一般方法,包括ruby代码和c扩展代码? 如果$ LOAD_PATH变量包含许多在很多地方定义的“接口”模块,在调用“require'Interface'”之后,如何判断ruby使用哪个模块? 例如,两者
/web/blogplus/lib
和
/web/blogplus/vendor
有一个名为“Interface”的gem,在启动rails之后,如果一个控制器实现了像
这样的类class MyCtrl < Interface
end
然后我怎么知道MyCtrl正在使用哪个模块?
答案 0 :(得分:1)
您可以使用反射并使用source_location
方法。
Interface.public_methods().map{|m| Interface.public_method(m).source_location }.uniq