CGI と URI にきていた脆弱性報告合計3つに CVE をアサインして修正バージョンをリリースとともに内容を公開した。
https://www.ruby-lang.org/en/news/2025/02/26/security-advisories/
年明けに3月末までにはやるかね、ということにして2月も終わるし頑張るか、と先週の木曜あたりから準備してやっと終わった。GitHub の private fork を使うと、コードのレビューはまあまあ楽にはなるのだが、情報の秘匿性の確保のために Actions は走らないので、古いバージョンの Ruby で動くんか?みたいのが検証できなくて本当にだるい。
あと、今回は毎回だるい作業のうち以下についてはこっそりと準備をして楽にしておいた。
-java
バージョンをリリースし忘れて、新しくリリースされたバージョンが JRuby でインストールできんのだが?という苦情をもらっていたのが、これで解決できる。今回は URI を 4 バージョン、 CGI を 3 バージョン * 2 プラットフォームの合計 10 個の gem をリリースしたけど、後からこのうち 3 つはいらんかった...ということに気がついてがっくりきてしまった。とはいえ、Ruby 3.1.6 よりも古い Ruby を使っている人ならまあ便利かなと思い自分を納得させた。お疲れ様でした。
mise にしてから gem-src を rbenv のプラグインとして使わなくなって、rubygems 経由で実行するのもなあと思ったので、素朴に最小の要件で作ってみた。
Gem::Specification.all.map{|s| [s.homepage, s.metadata["source_code_uri"]] }.flatten.uniq.
select{|u| u unless (u&.empty? || !u&.match?(/github\.com|gitlab\.org/) || u&.match?(/\/tree/)) }.sort.
each{|u| system("ghq get #{u}") };nil
ワンライナーとか言いつつ、改行が入っているけど、以下のコードを irb などで実行すると ghq 経由でインストールしている gem の gemspec を全部読み込んでソースコードがありそうな場所を適当に取り出して clone してくれる。
これを定期実行とか、もう少し軽い形で実行できるなんかを気が向けば作る、かもしれない。