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に追加するのである。

上手くできてるよなぁ。