朝起きたらリリースされていた。便利。
https://www.ruby-lang.org/en/news/2026/05/11/ruby-4-0-4-released/
で、各種ワークフローの動作状況をチェックしてみると all-ruby がこけていて、なんで?と調べていた。
https://bugs.ruby-lang.org/issues/22065
どうやら、コードドキュメントの中に UTF-8 が混入しており、rdoc が落ちるというやつだった。ひとまず回避手段はあるので、踏み抜いた人はオプションをつけるなりして対処してください。色々あるものだなあ。
RubyKaigi 2026 のあと 1 回目の開発者会議、のための準備会。
https://bugs.ruby-lang.org/issues/21956
RubyKaigi 疲れなのか、そのまま休暇、という人が多いのか議題はそれほど多くなくさっと眺めてから。RubyKaigi 前後にあったトピックを追いかけたりしていた。
takaknm が宮崎料理を食べに行こう、という企画をしてくれたので御徒町までぶらっと行って食べてきた。
https://asakusarb.esa.io/posts/1298
宮崎っていうと鳥南蛮???くらいの知識しかないのであれこれ食べつつ、RubyKaigi どうでした、という話をしながら横の人たちが焼酎を飲みながらビールをチェイサーにする、というのを見ていた。
21時には眠いです...となるので、強い気持ちで立ち上がって帰宅。お疲れ様でした。
とはいえ作ったのは claude なのだけど、以下の2つで override 機能を実装した。
具体的には以下のような DSL で Gemfile によって定義される gem のバージョンと依存ツリーを操作可能になる。
# rails gem のバージョンを直接/推移依存の両方を 8.0 以上に強制上書き
override "rails", version: ">= 8.0"
# 1つ目と同様のケースで rails gem のバージョンの上限(`< 8.0`など)を撤廃
override "rails", version: :ignore_upper
# legacy gem に対して指定されているバージョン指定を全部撤廃
override "legacy", version: nil
# Gemfile の全ての gem について `required_ruby_version` の上限(`< 4.0`)を撤廃
override :all, required_ruby_version: :ignore_upper
# old_gem 単独について上限を撤廃
override "old_gem", required_ruby_version: :ignore_upper
# old_gem 単独について rubygems の上限を撤廃
override "old_gem", required_rubygems_version: :ignore_upper
使うのは Ruby バージョンの上限撤廃とか、rails を 8 未満にすんな!とかそういう感じだと思うけど、やりようによっては色々できるようになる。これは流石に 4.0 には backport してリリースすることはないので RubyGems 4.1 か、Ruby 4.1 のリリースを待ってください。
ruby-dev バージョンを使えば今すぐにでも試せるので、期待とおかしいのだが、とかは報告してもらえると喜びます。
RubyGems 4.0.11 のリリースをやってる時に rebase merge した pull request を正しく backport できない、というバグを見つけて「マジか...」となり、その時は skip したので真面目に調べて直した。
問題を発見して、直し方を指示して、直したのは claude である。
これで、squash merge、rebase merge、merge commit の3パターン全てについて pull request を backport できるようになって、さらにそれぞれのケースで merge 済みの pull request も正しく検出できるようになったのでより堅牢なリリースができるようになると思う。乞うご期待。
ベランダガーデン用にタンクを用意してそこから水を吸い上げて散水をしているのだけど、このタンクに水を補充するという作業が数週間に1度、夏だと毎週バケツリレーをしていて流石にこれはいつか事故るなという予感がしたので、部屋の中からなんとかして水を弾けるようにした。
うちの水道の蛇口は特殊な形状のものが多くて、ホームセンターなどで売ってるものだと形が合わないものが多く、洗濯機の注水口から分岐する器具をつけるという方向で進めてみた。
分岐する器具もホースも TAKAGI というやつのを使って、結果としては十分に水を引けることがわかって今後はこれを使うことにした。このホース、シャワーではなくジェット噴射っぽいモードにするとケルヒャーっぽくベランダの汚れ落としにも使えて便利。
一通り満足した後に、洗濯機から分岐したホースを外すと、栓を閉めているにもかかわらず水が逆流してやや水浸しになってしまい、だめだこりゃ...となったので予備で買っておいた風呂場の蛇口に取り付ける器具を試してみたら思いの外ちゃんと取り付いてしまって、ホースを外した時の水あふれがあったのとしても、風呂場なのでよし!って感じで「これでよかったんや...」となってしまった。
結局、洗濯機経由の器具は全部取り外して、風呂場から水を引っ張ってベランダに使う、ということにした。お湯かどうかだけ気をつけなくてはいけない。
妻がお粥を食べたいというので、東銀座にある中国料理の店へ。と思いきや出かける直前になって、クレカを入れているカードケースがない!ということに気がついて、探したものの見つからず、eufy のトラッカーを見ると家にはあるけど、音は鳴らないという最悪な感じだった。とはいえ、探し始めて時間を潰してもしょうがないと目当ての店へ。
東銀座、サンドイッチの店にインバウンドの客がめちゃくちゃ行列を作っていて、日本人は誰も並んでない、ってのがシュールだった。別にサンドイッチに並ばなくてよくない?とは思うが何が流行るのかよくわからんなあ。で、料理は美味しかったのだけど、出かけてからずーっとカードケースをどこに置いたかなあというのを考えていて味の記憶がまるでない...。
帰りに神田でケーキでも、と思ったらこっちはこっちで大行列だったので秋葉原の駅でケーキを買ってサクッと帰宅。で、帰宅してからカードケースの捜索を開始したら、一瞬で見つかって脱力してしまった。いや、見つかったからいいんだけど...。