2013-09-25 4 views
1

Есть ли способ проверить, не подняв (и не спасет) ошибку, если на компьютере установлена ​​библиотека/gem "foo"?Проверка наличия библиотеки на компьютере

Возможно, ruby-gems или bundler должен иметь соответствующий код в источнике, но я не могу его обнаружить.

+0

'гем список Foo', или вы имеете в виду с в рамках программы? – matt

+0

@matt Да. Изнутри Ruby. – sawa

ответ

1

Я обнаружил соответствующую source. Я могу сделать:

  • Проверка весь путь нагрузки:

    Gem.find_files("foo").any? 
    
  • Проверка только драгоценных камней:

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

Если вы установили pry, то вы можете сделать, как показано ниже, используя метод Pry::Rubygem.installed?:

[email protected]:~$ 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 
Смежные вопросы