依存ライブラリーがなくてインストールが失敗しやすくなるバインディングはバインディング対象のライブラリーがないとインストールに失敗します。RMagickはImageMagickがないとインストールに失敗します。Nokogiriがデフォルトで自分で依存ライブラリーをビルドするようになっているのはこの失敗を防ぐためです。たしかに、自分でビルドしてしまうというのはこの問題の解決策の1つではあります。そんなに筋がよいとは思えません。脆弱性があったときの対応に関する問題があるからです。私がオススメする方法はシステムのパッケージシステムを使って自動で足りない依存ライブラリーをインストールする方法です。このための便利gemがnative-package-installerです。gemと一緒に使うことを想定していて、extconf.rbに次のように書いておけば、cairoがインストールされていなければ自動でインストールします。Windows用のRubyではgemのメタデータにMSYS2のパッケージを指定しておくことで同じ機能(自動で依存ライブラリーをインストールする機能)を実現できます。以下はcairo.gemspecでの例です。gemではすでにビルド済みなのでビルドが失敗することはありません。開発者が用意した環境でビルドが成功すればOKです。ユーザーの環境でビルドする場合は、開発者の環境では成功しているのにユーザーの環境では失敗することがあります。解決策は、CIでサポートしている環境を常にテストすることです。Actionsなどを使えば、いろんな環境でテストできます。Linuxの亜種はDockerを使うとよいでしょう。まとめ検討するべき項目が他にもある気がしますが、一通りまとめたので公開します。gemはやめないで!という気持ちになりましたか?もし、これはどうなの?という項目があったらなんらかの手段で私に聞いてください。「Fluentd」のサポートサービスを開始しました。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。