From 605a4429685f2c01ce8f68d1da750c4f8cb93a8d Mon Sep 17 00:00:00 2001 From: Igor Fedoronchuk Date: Thu, 1 Oct 2026 13:32:12 +0200 Subject: [PATCH 1/2] ci: drop EOL Ruby and Rails from the matrix Ruby 3.2 reached EOL on 2026-03-31 and Rails 7.1 (2025-10-01) and 7.2 (2026-08-09) are both past EOL, so testing them no longer tells us anything we act on. New matrix is a plain product: ruby: ['3.3', '3.4', '4.0'] rails: ['8.0.0', '8.1.0'] ActiveAdmin keeps all four entries. The old exclude: - rails: '8.0.0' activeadmin: '3.2.0' is deleted rather than carried over: it dates from before AA 3.2.x supported Rails 8, and `~> 3.2.0` now resolves to activeadmin 3.2.5, which installs and passes the full suite on both Rails 8.0 and 8.1. Nothing in the new matrix needs excluding, so the matrix has no `exclude:` key at all. The dummy app generator gains --skip-javascript. Rails 8.1's app template emits `stale_when_importmap_changes` in ApplicationController whenever importmap is in use, but the specs boot the dummy app under *this gem's* Gemfile, which has no importmap-rails, so every example died with: NameError: undefined local variable or method 'stale_when_importmap_changes' for class ApplicationController The dummy app's asset pipeline comes from sprockets-rails/sass-rails in the gem's Gemfile, so it never needed a JS bundler of its own. Coverage-badge steps now gate on ruby 4.0 / rails 8.1.0 / AA 3.5.1 -- the newest cell in the new matrix, and exactly 1 of the 24 legs, so still exactly one badge artifact. Gemfile's local default Rails drops to 8.0.0 for the same EOL reason; CI always sets RAILS explicitly, so this only affects a bare `bundle`. --- .github/workflows/ci.yml | 11 ++++------- Gemfile | 2 +- tasks/test.rake | 1 + 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cde0169..c51a8ef 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,12 +16,9 @@ jobs: strategy: fail-fast: false matrix: - ruby: ['3.2', '3.3', '3.4'] - rails: ['7.1.0', '7.2.0', '8.0.0'] + ruby: ['3.3', '3.4', '4.0'] + rails: ['8.0.0', '8.1.0'] activeadmin: ['3.2.0', '3.3.0', '3.4.0', '3.5.1'] - exclude: - - rails: '8.0.0' - activeadmin: '3.2.0' env: RAILS: ${{ matrix.rails }} AA: ${{ matrix.activeadmin }} @@ -35,7 +32,7 @@ jobs: run: bundle exec rspec spec - name: Generate badge.json - if: matrix.ruby == '3.4' && matrix.rails == '8.0.0' && matrix.activeadmin == '3.5.1' + if: matrix.ruby == '4.0' && matrix.rails == '8.1.0' && matrix.activeadmin == '3.5.1' run: | LAST_RUN="coverage/.last_run.json" if [ ! -f "$LAST_RUN" ]; then @@ -53,7 +50,7 @@ jobs: echo "{\"schemaVersion\":1,\"label\":\"coverage\",\"message\":\"${PERCENT}%\",\"color\":\"${COLOR}\"}" > badge/badge.json - name: Upload badge artifact - if: matrix.ruby == '3.4' && matrix.rails == '8.0.0' && matrix.activeadmin == '3.5.1' + if: matrix.ruby == '4.0' && matrix.rails == '8.1.0' && matrix.activeadmin == '3.5.1' uses: actions/upload-artifact@v4 with: name: coverage-badge diff --git a/Gemfile b/Gemfile index 165e561..c1b79dc 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' gemspec -default_rails_version = '7.1.0' +default_rails_version = '8.0.0' default_activeadmin_version = '3.2.0' gem 'rails', "~> #{ENV['RAILS'] || default_rails_version}" diff --git a/tasks/test.rake b/tasks/test.rake index f46bf45..3eacb6a 100644 --- a/tasks/test.rake +++ b/tasks/test.rake @@ -6,6 +6,7 @@ task :setup do --skip-turbolinks --skip-spring --skip-bootsnap + --skip-javascript -m spec/support/rails_template.rb ) From d0a9a4e6f6302620d49e58f926e051f3a35589d9 Mon Sep 17 00:00:00 2001 From: Igor Fedoronchuk Date: Thu, 1 Oct 2026 13:32:25 +0200 Subject: [PATCH 2/2] chore: raise the gemspec Ruby floor to 3.3 required_ruby_version was '>= 3.1.0', but Ruby 3.1 (EOL 2025-03-26) and 3.2 (EOL 2026-03-31) are no longer in CI, so that floor claimed support we do not test. 3.3 is the oldest Ruby the matrix exercises. The activeadmin dependency stays at ">= 3.0", "< 4.0": no ActiveAdmin version was dropped from the matrix (all four of 3.2.0, 3.3.0, 3.4.0 and 3.5.1 install and pass on Rails 8.0 and 8.1), and narrowing a runtime floor would be a breaking change for consumers regardless. No version bump and no release. --- active_admin_datetimepicker.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/active_admin_datetimepicker.gemspec b/active_admin_datetimepicker.gemspec index 843e25f..5889802 100644 --- a/active_admin_datetimepicker.gemspec +++ b/active_admin_datetimepicker.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |spec| spec.homepage = "https://github.com/activeadmin-plugins/activeadmin_datetimepicker" spec.license = "MIT" - spec.required_ruby_version = '>= 3.1.0' + spec.required_ruby_version = '>= 3.3' # Whitelist, not a reject list: a new directory in the repo does not # reach consumers until it is named here. The reject form needs a new