如何确定所需模块是来自gem还是核心模块?

时间:2013-06-18 22:55:41

标签: ruby

如果我在源代码中看到require

require "blah"

如何确定核心ruby安装是否提供了该库(“blah”),或者它是否来自安装gem?

2 个答案:

答案 0 :(得分:1)

require找到加载的库文件后,会将该文件的完整路径添加到$LOADED_FEATURES数组中。因此,您可以查看该数组以查看它找到的位置blah

$LOADED_FEATURES.find_all { |path| puts path if /blah/ =~ path }

答案 1 :(得分:1)

您可以阅读$LOADED_FEATURES并检查路径是否来自gem,这意味着您正在测试该功能是否属于核心安装。

# return true if library is an external gem
$LOADED_FEATURES.grep(/library/).grep(/gems/).size > 0