1

"foo"ライブラリ/gemがコンピューターにインストールされていて利用可能な場合、エラーを発生させずにチェックする方法はありますか?

おそらく、ruby-gemsまたはbundlerソースに関連するコードが含まれているはずですが、それを見つけることができません。

4

2 に答える 2

1

関連するソースを見つけました。できます:

  • ロード パス全体の確認:

     Gem.find_files("foo").any?
    
  • gem のみのチェック:

     Gem.find_files("foo", false).any?
    
于 2013-09-25T20:35:52.280 に答える
0

てこをインストールした場合は、次の方法を使用して次のように実行できます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
于 2013-09-25T20:24:15.127 に答える