Skip to content

Modernize CI and add Ruby 4 and Grape 4 coverage - #182

Merged
dblock merged 1 commit into
slack-ruby:masterfrom
dblock:ci/modernize
Oct 24, 2026
Merged

dblock merged 1 commit into
slack-ruby:masterfrom
dblock:ci/modernize

Conversation

@dblock

@dblock dblock commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Modernize CI before the next release without dropping existing compatibility coverage.

  • Preserve all eight unique MongoDB combinations and all eight PostgreSQL combinations; remove only one exact duplicate MongoDB row.
  • Add Ruby 4.0, Mongoid 9.1, Active Record 8.1, and PostgreSQL 18, with explicit Grape 3.2 and Grape 4.0 jobs for both adapters.
  • Add a GRAPE_VERSION development dependency selector alongside the existing ORM selectors.
  • Upgrade checkout, use health-checked database service containers, enable adapter-aware Bundler caching, and replace obsolete browser/Xvfb actions with Firefox setup, Selenium Manager, and xvfb-run.
  • Add read-only permissions, timeouts, independent concurrency groups, and non-fail-fast matrices.
  • Replace CGI.parse in pagination test helpers with URI.decode_www_form for Ruby 4 compatibility and document local adapter/version selection in CONTRIBUTING.md.
  • Add an optional JSON_VERSION development/test selector: affected legacy jobs use JSON 2 because their Active Support versions pass the removed quirks_mode option; compatible jobs explicitly use JSON 3. Include the selection in job names and cache keys. Neither the Gemfile's default nor the gemspec imposes a JSON upper bound.
  • Add AGENTS.md with repository structure, safe test database setup, adapter/browser checks, compatibility expectations, and contribution conventions.

Validation

Workflow syntax passes actionlint, and a comparison against upstream confirms every unique legacy matrix combination remains.

Locally on Ruby 4.0.9 and Grape 4.0.1: RuboCop passes, Mongoid 9.1.1 with JSON 3.1.0 passes all 74 examples (two adapter-specific pending), and Active Record 8.1.4 with JSON 3.1.0 passes all 74 examples (one version-specific pending). Active Record 8.0.5.1 with JSON 2.21.2 also passes all 74 examples. Local PostgreSQL is 14; PostgreSQL 18 and the complete compatibility matrix are exercised by the hosted workflows. All 22 matrix entries explicitly select JSON 2 or 3, with 14 legacy JSON 2 jobs and eight compatible JSON 3 jobs.

This does not release the gem or change the existing upstream Grape error-handler fix.

Authored by Copilot (AI), on behalf of @dblock.

@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Danger Report

No issues found.

View run

Retain existing compatibility combinations while adding current ORM/database versions, native service containers, dependency caching, and maintained browser setup. Update pagination test query decoding for Ruby 4.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dblock
dblock merged commit 3ab052e into slack-ruby:master Oct 24, 2026
25 checks passed
@dblock
dblock deleted the ci/modernize branch October 24, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant