2013-06-18 9 views
5

ソースコードでrequireが表示されたらそれは宝石のインストールから来た場合必要なモジュールが宝石から来たのか、それともコアモジュールであるのかをどうやって判断するのですか?

require "blah" 

は、どのように私は、そのライブラリ(「何とか」)がコアルビーのインストールによって提供されたかどうかを調べるか、ですか?

+0

Ruby Coreには絶対に「require」が必要ありません。おそらくあなたは[標準ライブラリ](http://ruby-doc.org/stdlib-2.0/)を意味していますか? –

答えて

1

を見つけたあなたは$LOADED_FEATURESを読むことができるし、パスが宝石から来たかどうかをチェック確認するために、その配列に見ることができますない。

# return true if library is an external gem 
$LOADED_FEATURES.grep(/library/).grep(/gems/).size > 0 
+0

これはうまくいくと思います。私もそれを試しました。しかし、私はどこかのメタデータには残念ですが、代わりにファイルシステムのパスにキーワードを求めています。しかたがない。 – DragonFax

1

requireがロードされたライブラリファイルを検出すると、そのファイルへのフルパスが$LOADED_FEATURESアレイに追加されます。ですから、機能はコアのインストールに属しているかどうかをテストしていることを意味し、それはblah

$LOADED_FEATURES.find_all { |path| puts path if /blah/ =~ path } 
+0

'$ LOADED_FEATURES.select {| path | path.include?( '探すべきもの')} 'はうまくいきます。配列を返し、あなたが望む方法でそれを使うことができます。 – vgoff

関連する問題