如何知道我是否需要图书馆

时间:2014-02-21 02:05:01

标签: ruby gem rake

有没有办法做这样的伪代码?

puts was_required?('my-library')
=> false

require('my-library')
puts was_required?('my-library')
=> true

我希望能够测试我是否需要一些库,无论是Gem o还是Rake任务,都是 require-name

如果gem加载的Class可用,我可以测试gem测试,但我真的很想测试使用库名,没有类名。

对于rake任务是一样的。我可以在Rake.tasks找到我需要的库中的任务,我想用库名测试,不用任务名称

感谢

1 个答案:

答案 0 :(得分:1)

也许您想要使用$LOADED_FEATURES(别名为$"),该数组包含module names加载的require

def was_required?(file)
  rex = Regexp.new("/#{Regexp.quote(file)}\.(so|o|sl|rb)?")
  $LOADED_FEATURES.find { |f| f =~ rex }
end

was_required?('uri')
#=> false
require 'uri'
#=> true
was_required?('uri')
#=> true

顺便说一下,这正是Ruby在require方法中的作用。