Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 37 additions & 24 deletions lib/tasks/data.rake
Copy link
Copy Markdown
Member

@JuanVqz JuanVqz Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be great to have a document/section in the readme about where/what we should check to gather this information and what the criteria are that we use to update/add the new minimum/maximum version for future Rails releases.
Could we add a short section in the README documenting how we derive these Rails release compatibility values?

Specifically:
Which sources we use (for Ruby, Bundler, and RubyGems constraints).
The criteria/rules for setting minimum and maximum versions.
That would make future updates more consistent and easier to review.

Original file line number Diff line number Diff line change
Expand Up @@ -32,108 +32,121 @@ namespace :data do
"2.3" => {
minimum_ruby_version: "1.8.7",
maximum_ruby_version: "1.9.3",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.0.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
Comment on lines 32 to 37
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The task updates maximum Ruby/Bundler versions but never sets maximum_rubygems_version for any Rails version, even though the rails_releases table includes a maximum_rubygems_version column (see db/schema.rb). If the intent is to track max supported RubyGems versions (as mentioned in the PR description), add maximum_rubygems_version values here; otherwise consider removing/renaming the column or updating the PR description to match the implemented behavior.

Copilot uses AI. Check for mistakes.
},
"3.0" => {
minimum_ruby_version: "1.8.7",
maximum_ruby_version: "1.9.3",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.0.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
},
"3.1" => {
minimum_ruby_version: "1.8.7",
maximum_ruby_version: "2.1.9",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.0.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
},
"3.2" => {
minimum_ruby_version: "1.8.7",
maximum_ruby_version: "2.1.9",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.0.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
},
"4.0" => {
minimum_ruby_version: "1.9.3",
maximum_ruby_version: "2.1.9",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.3.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
},
"4.1" => {
minimum_ruby_version: "1.9.3",
maximum_ruby_version: "2.1.9",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.3.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
},
"4.2" => {
minimum_ruby_version: "1.9.3",
maximum_ruby_version: "2.2.10",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.3.0",
maximum_bundler_version: "1.17.3",
minimum_rubygems_version: "1.3.6"
},
"5.0" => {
minimum_ruby_version: "2.2.10",
maximum_ruby_version: "2.5.9",
minimum_bundler_version: "1.17.3",
minimum_bundler_version: "1.3.0",
maximum_bundler_version: "2.3.27",
minimum_rubygems_version: "1.3.6"
},
"5.1" => {
minimum_ruby_version: "2.2.10",
maximum_ruby_version: "2.6.10",
minimum_bundler_version: "1.17.3",
maximum_bundler_version: "2.4.22",
minimum_rubygems_version: "1.3.6"
},
"5.2" => {
minimum_ruby_version: "2.2.10",
maximum_ruby_version: "2.7.8",
minimum_bundler_version: "1.17.3",
maximum_bundler_version: "2.4.22",
minimum_rubygems_version: "1.3.6"
},
"6.0" => {
minimum_ruby_version: "2.5.9",
maximum_ruby_version: "3.0.7",
minimum_bundler_version: "2.3.0",
maximum_bundler_version: "2.5.23",
minimum_rubygems_version: "2.5.0"
},
"6.1" => {
minimum_ruby_version: "2.5.9",
maximum_ruby_version: "3.0.7",
minimum_bundler_version: "2.3.0",
maximum_bundler_version: "2.5.23",
minimum_rubygems_version: "2.5.0"
},
"7.0" => {
minimum_ruby_version: "2.7.8",
minimum_ruby_version: "2.7.0",
maximum_ruby_version: "3.1.6",
minimum_bundler_version: "2.4.0",
maximum_bundler_version: "4.0.8",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bundler 4.0.8 (shows Required Ruby Version: >= 3.2.0): rubygems.org/gems/bundler/versions/4.0.8

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but bundle 2.4 works with Ruby 2.7, that's the point

minimum_rubygems_version: "3.0.1"
},
"7.1" => {
minimum_ruby_version: "2.7.8",
maximum_ruby_version: "3.2.5",
minimum_ruby_version: "2.7.0",
maximum_ruby_version: "3.3.5",
minimum_bundler_version: "2.3.27",
maximum_bundler_version: "2.5.20",
maximum_bundler_version: "4.0.8",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this max Bundler be lower for Rails 7.1? Bundler 4.0.8 needs Ruby >= 3.2.0 and the minimum_ruby_version is 2.7.0 which cannot be used at Bundler 4.0.8.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so. The way I interpret these values is that there is a combination of ruby, bundler and rubygems that works with this version of Rails. So, if you use bundler 4.0.8, you cannot use Ruby 2.7, but you can use 3.3 and then both bundler and ruby at those versions are compatible with Rails 7.

The important thing here is if rails 7 is compatible with bundler 4, not if bundler 4 works with ruby 2.7 (which also happens to be compatible with Rails 7)

minimum_rubygems_version: "3.0.1"
},
"7.2" => {
minimum_ruby_version: "3.1.6",
maximum_ruby_version: "3.3.5",
minimum_ruby_version: "3.1.0",
maximum_ruby_version: "3.3.9",
minimum_bundler_version: "2.5.20",
maximum_bundler_version: "2.5.20",
minimum_rubygems_version: "3.2.3"
},
maximum_bundler_version: "4.0.8",
minimum_rubygems_version: "3.3.3"
},
"8.0" => {
minimum_ruby_version: "3.2.0",
maximum_ruby_version: "3.4.2",
maximum_ruby_version: "4.0.2",
minimum_bundler_version: "2.5.20",
maximum_bundler_version: "2.5.20",
minimum_rubygems_version: "3.2.3"
},
maximum_bundler_version: "4.0.8",
minimum_rubygems_version: "3.3.3"
},
"8.1" => {
minimum_ruby_version: "3.2.0",
Comment on lines 137 to 145
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This task now includes Rails 8.0/8.1 entries (and updates Bundler/RubyGems constraints too), but the task desc still says it updates minimum Ruby versions only and only up to Rails 7.2. Updating the desc string would keep rake -T output accurate for the expanded scope.

Copilot uses AI. Check for mistakes.
maximum_ruby_version: "3.4.8",
maximum_ruby_version: "4.0.2",
minimum_bundler_version: "2.5.20",
maximum_bundler_version: "2.5.20",
minimum_rubygems_version: "3.2.3"
maximum_bundler_version: "4.0.8",
minimum_rubygems_version: "3.3.3"
}
}

Expand Down
Loading