如果我require
在源代码中看到一个。
require "blah"
如何确定该库(“blah”)是由核心 ruby 安装提供还是来自 gem 安装?
一旦require
找到加载的库文件,它就会将该文件的完整路径添加到$LOADED_FEATURES
数组中。所以你可以在那个数组中查看它在哪里找到blah
$LOADED_FEATURES.find_all { |path| puts path if /blah/ =~ path }
您可以阅读$LOADED_FEATURES
并检查路径是否来自 gem,这意味着您正在测试该功能是否属于核心安装。
# return true if library is an external gem
$LOADED_FEATURES.grep(/library/).grep(/gems/).size > 0