Repository navigation
Drop EOL Ruby and Rails from CI - #20
Merged
Merged
Conversation
Ruby 3.2 reached end of life on 2026-03-31; Rails 7.1 on 2025-10-01 and 7.2 on 2026-08-09 (endoflife.date). The matrix now covers Ruby 3.3/3.4/4.0 against Rails 8.0 and 8.1. Both Active Admin versions stay and the matrix has no excludes at all. The two it carried claimed "Active Admin 3.2 predates Rails 8 support", which is not what happens: AA 3.2.5 installs and the full suite passes on both Rails 8.0.5.1 and 8.1.4, so the rules were removing real coverage. The Gemfile's local default Rails is now 8.0.0 so a bare `bundle install` no longer resolves an EOL Rails.
required_ruby_version moves from >= 3.2 to >= 3.3 to match what CI tests now that Ruby 3.2 is end of life. The activeadmin and railties dependency ranges are untouched. No Active Admin version was dropped from the matrix, and narrowing the tested Rails range is not evidence the gem stopped working on older Rails — raising a runtime floor would break consumers for nothing. No version bump, no release.
Fivell
force-pushed
the
chore/drop-eol-ruby-rails
branch
from
October 1, 2026 11:31
465fd48 to
7aefd2f
Compare
The matrix now stops at Rails 8.0, but the gemspec still declared railties >= 7.1 and the README still promised "Rails 7.1 or newer". That left the declared floor untested, which is the exact gap the explicit floors were added to close -- the paragraph directly below the claim says so, about Active Admin's own railties >= 6.1. The same question was already answered the other way in this branch for Ruby: CI moved to 3.3+, so the floor moved to 3.3. Rails gets the same treatment. Every Rails 7.x series is out of support -- 7.1 since October 2025, 7.2 since August 2026 -- so nothing being dropped was receiving security fixes. Dropping a supported version is user-visible, so bump the minor to 0.4.0 in both the gem and the npm package, and say in the README that 0.3.x is where Rails 7 users stay.
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 end-of-life Ruby and Rails from CI and moves the gemspec's Ruby floor to match. No version bump, no release.
Matrix
Before — 3 Ruby x 4 Rails x 2 AA = 24, minus the 6 legs the 2 exclude rules matched = 18 legs
['3.2', '3.3', '3.4']['7.1.0', '7.2.0', '8.0.0', '8.1.0']['3.2.0', '3.5.0']After — 3 Ruby x 2 Rails x 2 AA, no excludes = 12 legs
['3.3', '3.4', '4.0']['8.0.0', '8.1.0']['3.2.0', '3.5.0']What went, and why
Per endoflife.date/ruby and endoflife.date/rails:
Kept: Ruby 3.3 (2027-03-31, security-only — this is the floor), 3.4 (2028-03-31), 4.0 (2029-03-31); Rails 8.0 (2026-11-07) and 8.1 (2027-10-10). Rails 8.2 is not released (
mainis8.2.0.alpha, no tag), so it is not added.No ActiveAdmin version was dropped
The two existing excludes were annotated "Active Admin 3.2 predates Rails 8 support", which implied AA 3.2.0 had no valid pairing left once Rails 7.x went and should come out of the matrix with them.
That comment is not what actually happens. AA 3.2 installs and passes the full suite on both Rails 8 releases:
So the excludes were suppressing coverage that works. Both AA versions stay, both stale rules are deleted, and the matrix is left with no excludes. Because nothing was dropped, the gemspec's
activeadmin "~> 3.2"floor is left alone too.gemspec
It did already declare a Ruby floor —
required_ruby_version = ">= 3.2", added in #15 — so this is a move to">= 3.3", not a new declaration.Deliberately untouched:
activeadmin "~> 3.2"(no AA version dropped) andrailties ">= 7.1". Narrowing the tested Rails range is not evidence the gem broke on older Rails, and raising a runtime floor is a breaking change for consumers for no gain.No
.ruby-versionand no.rubocop.ymlin this repo, so there is noTargetRubyVersionto keep in step. No CHANGELOG either, so none was created. The README's compatibility section is updated and the Gemfile's localdefault_rails_versionmoves7.1.0->8.0.0so a barebundle installno longer resolves an EOL Rails.Local verification
Ruby via rbenv, Chrome for cuprite, suite driven with
bundle exec rake setupthenbundle exec rspec spec.Required leg, Ruby 3.4.10 with the newest Rails in the new matrix:
New floor leg, Ruby 3.3 x Rails 8.1 — the newest pairing on the oldest supported Ruby:
Ceiling leg, Ruby 4.0.6 x Rails 8.1:
A note on Ruby 3.3 patch levels
An earlier revision of this PR excluded Ruby 3.3 x Rails 8.1 and pinned simplecov to
< 1.1on Ruby < 3.4. Both were wrong and have been removed.actionview-8.1.4/lib/action_view/helpers/capture_helper.rb:50andsimplecov-1.3.2/lib/simplecov/result_merger/resultset_store.rb:38both forward anonymous args from inside a block. That is rejected by Ruby 3.3.0 only — the restriction was lifted in a later 3.3 patch:ruby/setup-rubyresolvesruby-version: '3.3'to 3.3.12, so CI was never affected either way. The diagnosis came from a local rbenv default of 3.3.0. Re-measured on 3.3.12 the cell passes with stock, unpinned simplecov 1.3.2 and actionview 8.1.4 (table above), so the matrix keeps all 12 legs and the Gemfile keeps plaingem 'simplecov', require: false.rake setupbehaved: the dummy-app cache key already accounts forAAonmaster(#18), and each leg rebuilt its own app. It prints noise on Rails 8.1 (Could not find gem 'kamal',Unrecognized command "solid_cache:install") from the generator's post-install hooks;rails newstill exits 0 andconfig/environment.rbis written, so the suite boots. Pre-existing and unrelated to this change — not touched here.There is no coverage-badge job in this workflow, so no
if:gating needed updating.