woshidan's loose leaf

ぼんやり勉強しています

Rubyのgemをインストールしている際に他のライブラリのインストールを要求してくるnative extensionとは何者か

stackoverflow.com

gemのnative extenstionは、主にCやC++などで書かれるライブラリを必要とするRubyのコードあたりを指す。

たとえば、mysql2のnative extensionが~と出てきたら、mysql2のgemのコードの一部は、CやC++で書かれたMySQLのクライアントライブラリを必要としている、ということ。native extenstionである部分を含むgemをインストールする場合は、CやC++で書かれたライブラリを別途gemのインストール先にインストールしておく必要がある。

ネイティブ(CやC++で書かれた)ライブラリにRubyで書かれたgemが依存してるのであって、ネイティブライブラリがRubyのgemに依存しているわけではない。

たとえば、ImageMagicのnative extensionとして入れた画像処理系のライブラリをRMagickのnative extensionとして利用してもよい*1。元の画像処理系ライブラリの方はRubyのgemのことなんて知らないので。

*1:バージョンさえあっていれば