Ruby 4.0.1と3.2.10をdevcontainerに追加
rails/devcontainerがRuby 4.0.1および3.2.10をサポートするようになりました。デフォルトバージョンが4.0.1に更新され、devcontainer機能のバージョンも2.1.3に引き上げられています。
背景
Ruby 4.0.1のリリースに伴い、#108でdevcontainerへの対応が要求されました。rails/devcontainerは複数のRubyバージョンを .github/ruby-versions.json で管理しており、新しいRubyリリースごとにこのリストと各種設定ファイルを更新する必要があります。
本PRはこの要求に対応し、Ruby 4.0.1を追加すると同時に、3.2系の最新版である3.2.10も追加しています。
技術的な変更
.github/ruby-versions.json に2つのバージョンが追加されました。
[
"4.0.1",
"4.0.0",
"3.4.8",
// ...
"3.3.0",
"3.2.10",
"3.2.9",
// ...
]
バージョン配列は降順でソートされており、4.0.1が先頭に配置されています。3.2.10は3.3.0の直後、3.2.9の直前に挿入されています。
デフォルトバージョンの更新に伴い、features/src/ruby/devcontainer-feature.json の version フィールドが2.1.2から2.1.3にバンプされました。
{
"id": "ruby",
"version": "2.1.3",
"options": {
"version": {
"type": "string",
"default": "4.0.1",
"description": "The ruby version to be installed"
}
}
}
options.version.default が4.0.0から4.0.1に変更され、新規ユーザーはデフォルトで最新の4.0.1を使用することになります。
テストコードも新しいデフォルトバージョンを反映するよう更新されました。features/test/ruby/test.sh と features/test/ruby/with_rbenv.sh で、バージョン確認の期待値が4.0.0から4.0.1に変更されています。
check "Ruby version is set to 4.0.1" bash -c "mise use -g ruby | grep 4.0.1"
設計判断
JSONのインデントスタイルを4スペースに統一する変更 が含まれています。
lib/add_ruby_version.rb の write_json メソッドが修正され、JSON.pretty_generate に indent: " " オプションが追加されました。
def write_json(relative_path, data)
json = JSON.pretty_generate(data, indent: " ")
File.write(path_for(relative_path), json + "\n")
end
これまでRubyのデフォルト2スペースインデントで生成されていたJSONファイルが、4スペースで統一されるようになります。test/add_ruby_version_test.rb にインデント検証のテストケースが追加されており、この変更が意図的なものであることを示しています。
content = File.read(File.join(@temp_dir, ".github/ruby-versions.json"))
assert_match(/^ "3\.4\.0"/, content, "Should use 4-space indentation")
まとめ
本PRは新しいRubyバージョンの追加に加え、JSONファイルのフォーマット規則を明確化しています。バージョン管理、デフォルト値の更新、テストケースの修正を一貫して行い、devcontainer機能のバージョンバンプによって変更の影響範囲を明示しています。