Repository navigation
ci: drop EOL Ruby and Rails from the matrix - #2
Merged
Merged
Conversation
Ruby 3.2 reached end of life on 2026-03-31 and Rails 7.2 on 2026-08-09, so neither belongs in CI any more. The new matrix is Ruby 3.3/3.4/4.0 against Rails 8.0 and 8.1 - Rails 8.0 itself goes EOL on 2026-11-07, which leaves 8.1 as the only long-lived leg, so it has to be there. Rails 8.1's app generator writes `stale_when_importmap_changes` into ApplicationController, and rails_template.rb discards the generated Gemfile, so the sample app boots with no importmap-rails and raises NameError before any example runs. Generating with --skip-javascript keeps the fix at the generator instead of patching a generated file.
Ruby 3.0 through 3.2 are all out of support and none of them is tested any more, so claiming ">= 3.0" overstates what the gem is known to run on. The activeadmin dependency is untouched: narrowing the tested Rails range is not evidence the gem broke on older Active Admin, and raising a runtime floor would be a breaking change for consumers.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Drops the end-of-life Ruby and Rails legs from CI and raises the gemspec Ruby floor to match what is actually tested.
Matrix
['3.2', '3.4']['3.3', '3.4', '4.0']['7.2.0', '8.0.0']['8.0.0', '8.1.0']['3.5.0']['3.5.0'](unchanged)4 legs before, 6 after.
Why each removal
Per endoflife.date/ruby and endoflife.date/rails:
And what stays:
Rails 8.0 goes EOL on 2026-11-07 — about five weeks out. It is kept for now as the oldest
still-supported release, but 8.1 is the only long-lived leg in this matrix, which is why it had to
be added rather than just swapped in later.
Rails 8.2 is not released (main is
8.2.0.alpha, no tag or pre-release on RubyGems), so it is notadded.
No
exclude:rules were added. In particular Ruby 3.3 x Rails 8.1 is a good cell: theanonymous-parameter-forwarding-in-a-block
SyntaxErrorthat affects actionview 8.1 exists only inRuby 3.3.0, the first 3.3 release, and is fixed in later patches.
ruby/setup-rubywithruby-version: '3.3'installs the newest 3.3 patch, so CI never sees it — and it is verified greenlocally on 3.3.12 below.
The ActiveAdmin dimension is left exactly as it was; adding an AA 4.0 line is out of scope here.
Also in this PR
tasks/test.rakegenerates the sample app with--skip-javascript. Rails 8.1's app generatorwrites
stale_when_importmap_changesintoApplicationController, andrails_template.rbdeliberately discards the generated Gemfile so the app runs under this gem's own sprockets bundle
with no
importmap-rails. Without the flag, every Rails 8.1 leg dies before the first example:Fixed at the generator rather than by patching the generated file afterwards.
required_ruby_version→">= 3.3".">= 3.0"claimed support for three Rubies that are allout of support and none of which is tested.
README no longer advertises Rails 7.2 as a tested target.
The
activeadminruntime dependency (>= 3.5, < 4) is untouched — narrowing the tested range is notevidence the gem broke on older Active Admin, and raising a runtime floor is a breaking change for
consumers. The gem version is not bumped and nothing is released.
The separate "Generate the sample app" CI step is kept as-is, so a generation failure still is not
reported as a failure of the first example.
Local verification
All runs with
CI=true(the dummy app'sconfig/environments/test.rbcarriesconfig.eager_load = ENV["CI"].present?, and ActiveAdmin needs eager loading before the specs callActiveAdmin.register).Primary leg — Ruby 3.4.10 / Rails 8.1.0 / AA 3.5.0 (resolved Rails 8.1.4):
New floor — Ruby 3.3.12 / Rails 8.0.0 / AA 3.5.0 (resolved Rails 8.0.5.1):
Ceiling — Ruby 4.0.6 / Rails 8.1.0 / AA 3.5.0:
Three legs green, 43 examples each,
bundle installandrake setupexit 0 on all three. The 8.0leg generated
spec/rails/rails-8.0.5.1and the 8.1 legspec/rails/rails-8.1.4, confirming theGemfile's three-segment
~> 8.0.0pin really tests Rails 8.0 and does not drift up to 8.1.