检查计算机上是否安装了库

时间:2013-09-25 20:11:26

标签: ruby gem

如果计算机上安装了库/ gem "foo"并且可用,是否可以在不引发(并抢救)错误的情况下进行检查?

可能ruby-gemsbundler应该在源代码中包含一些相关代码,但我无法发现它。

2 个答案:

答案 0 :(得分:1)

我发现了相关的source。我能做到:

  • 检查整个加载路径:

     Gem.find_files("foo").any?
    
  • 仅检查宝石:

     Gem.find_files("foo", false).any?
    

答案 1 :(得分:0)

如果您安装了pry,那么您可以使用Pry::Rubygem.installed?方法执行以下操作:

kirti@kirti-Aspire-5733Z:~$ irb
2.0.0p0 :001 > require 'pry'
 => true 
2.0.0p0 :002 > pry
[1] pry(main)> Pry::Rubygem.installed?('nokogiri')
=> true
[2] pry(main)> Pry::Rubygem.installed?('foo')
=> false
[3] pry(main)>

或者你可以这样做:

require 'rubygems'

def installed?(name)
  if Gem::Specification.respond_to?(:find_all_by_name)
    Gem::Specification.find_all_by_name(name).any?
  else
    Gem.source_index.find_name(name).first
  end
end

installed?('nokogiri') # => true
installed?('foo') # => false