Ruby で,cairo というグラフィックライブラリーがある。
これを使ったプロジェクトで,bundle update したら起動すらしなくなった。
cairo のロード時に Bundler::GemRequireError が発生して死ぬ。
原因
-
json が2026年9月7日付で 3.0.0 になった
- このとき,
JSON.loadのcreate_additionsオプションが廃止された - 安全性に問題があったとのこと
- このとき,
- cairo gem は色情報を扱う red-colors という gem に依存している
- red-colors gem(バージョン 0.4.0) は
create_additionsを 使っている
解決
本件は既に red-colors にプルリクエストが提出されている:
fix: change JSON.load to JSON.parse to make code work with json v3 - #30
ただ,red-colors は最後のリリースから二年半が経ち,古い issues や pull requests が溜まったままになっているので,修正版がすぐにリリースされるかは分からない。
さしあたり json をバージョン 3 未満で使うことになりそう。
追記 2026-09-09
件のプルリクエストはすぐに取り込まれ,無事 red-colors 0.5.0 がリリースされた。
本件は解決した。関係者のみなさまに感謝。
……のだが,本記事を書くきっかけになった Rails アプリ(cairo を使っている)で,bundle update したら直ったかというと,今度は active_decorator と json 3.0.x の絡みで Internal Server Error が出た。
やれやれ。