トップ «前の日記(2026/05/10 (日) ) 最新 編集 RSS feed

HsbtDiary


2026/05/11 (月) [長年日記]

Bundler の Gemfile に override を実装した

とはいえ作ったのは 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 のリリーススクリプトを修正

RubyGems 4.0.11 のリリースをやってる時に rebase merge した pull request を正しく backport できない、というバグを見つけて「マジか...」となり、その時は skip したので真面目に調べて直した。

問題を発見して、直し方を指示して、直したのは claude である。

これで、squash merge、rebase merge、merge commit の3パターン全てについて pull request を backport できるようになって、さらにそれぞれのケースで merge 済みの pull request も正しく検出できるようになったのでより堅牢なリリースができるようになると思う。乞うご期待。