在运行时获取ruby所需的模块路径(或gem路径)

时间:2016-05-04 11:38:49

标签: ruby module require

好吧,我搜索了这个问题,但我找不到能给它一个明确解释的问题。   我想知道是否有一种在运行时检测加载的模块路径的一般方法,包括ruby代码和c扩展代码?   如果$ LOAD_PATH变量包含许多在很多地方定义的“接口”模块,在调用“require'Interface'”之后,如何判断ruby使用哪个模块?   例如,两者

/web/blogplus/lib

/web/blogplus/vendor

有一个名为“Interface”的gem,在启动rails之后,如果一个控制器实现了像

这样的类
class MyCtrl < Interface
end

然后我怎么知道MyCtrl正在使用哪个模块?

1 个答案:

答案 0 :(得分:1)

您可以使用反射并使用source_location方法。

Interface.public_methods().map{|m| Interface.public_method(m).source_location }.uniq