Gemfile での Ruby バージョンの指定を、値の直書きではなく .ruby-version からの読み込みに変更する設定です。 https://github.com/rubygems/rubygems/pull/6876
例えば、Rails アプリケーションなんかで Gemfile に .ruby-version と同じ 3.3.0 を指定しているようであれば、以下のように記述できます。
-ruby '3.3.0' +ruby file: '.ruby-version'
asdf に類するものを使っているようであれば、ruby file: '.tool-versions'
と記します。
https://github.com/rubygems/rubygems/pull/6898
この設定によって Ruby のアップデート時のバージョンの更新ポイントを減らすことができます。
なお、古い Bundler ではこのオプションは使えないため、その場合は BUNDLED WITH
の値を bundle update --bundler
あたりで更新する必要があります。
BUNDLED WITH - 2.3.7 + 2.5.3
もし、古い環境で ruby File.read('.ruby-version').strip
と Gemfile に書いているようであれば、新しい Bundler ではこんな感じで書くことができるのでここで紹介した DSL に沿っておくと良いと思います。
そんな感じの Bundler 小技でした。
ここからはおまけ。
これは RuboCop に入れれば良いのでは?と思った方は鋭い。以下の考慮点をどうするかで悩んでいるところ。
最初に考えるのは、この API に対応している Ruby 3.3 梱包のデフォルト Bundler だとしても、BUNDLED WITH
が旧来のままだと ruby file: '.ruby-version'
は書けない問題。ただし、これは BUNDLED WITH
を見れば解決可。
で、本質的に難しいのは例えば CI 環境によっては .ruby-version のコピーが必要だと、ローカルで読めたファイルが CI で読み込みできずにエラーになることを防げません (つまり CI 環境への手入れが必要) 。そうなるとオートコレクトは提供せずに、このあたりはドキュメンテーションとする?そうすると、そこまで頑張ってまで Cop として入れるかというと、小技っぽい感じなのでやめておこうというのがいまのところ。過去の流れ も踏まえて、気が向いたらもう少し考えます。