rubygemsのライブラリィ検索順
では、その期待されているmysql.soも格納されているrubyGemsでインストールされたライブラリィのプロービングはどのようになっているのだろう。
と、どんどんと深みにはまるのだった。
Rubyのライブラリィ検索パス
全てはrubygems.rbから始まる。
def gem(gem_name, *version_requirements) # :doc:
skip_list = (ENV['GEM_SKIP'] || "").split(/:/)
raise Gem::LoadError, "skipping #{gem_name}" if skip_list.include? gem_name
Gem.activate(gem_name, *version_requirements)
end
全てのコードを追って検証するとかなりの量になるので今回は割愛するが、このgemメソッド(昔はrequire_gemだったそうだ)により、指定されたジェムパターン(正規表現)とバージョンによりGem.activateメソッドがインストールされたgemを探し、見つかればそのgemspecのrequire_pathsを$LOAD_PATHに追加するのである。
上手くできてるよなぁ。