From acf6bd7274d6338a04ab8b857fa340b3bfc3a657 Mon Sep 17 00:00:00 2001 From: Ross Brandes Date: Tue, 22 Sep 2026 10:40:37 -0400 Subject: [PATCH 1/3] Add newer supported Ruby versions to CI --- .github/workflows/main.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 052cddc..87d2b50 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,8 +14,11 @@ jobs: strategy: matrix: ruby: - - '3.1.2' - - '2.6.0' + - '2.6' + - '3.1' + - '3.3' + - '3.4' + - '4.0' steps: - uses: actions/checkout@v7 From 9fc87c44d860edc0eba95c52f0212ddd920c12d1 Mon Sep 17 00:00:00 2001 From: Ross Brandes Date: Tue, 22 Sep 2026 11:00:35 -0400 Subject: [PATCH 2/3] Fix lint deps for newer Ruby versions rubocop/standard/parser were pinned to versions that relied on racc, mutex_m, and ostruct being bundled as Ruby default gems, which is no longer true on Ruby 3.3+. Updated the lint gems and added ostruct and fiddle as explicit dependencies so `rake` (test + standard) passes on Ruby 2.6 through 4.0. --- Gemfile | 2 ++ Gemfile.lock | 72 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/Gemfile b/Gemfile index bac357f..ca3ba2e 100644 --- a/Gemfile +++ b/Gemfile @@ -6,3 +6,5 @@ gem "debug" gem "rake" gem "minitest" gem "standard" +gem "ostruct" +gem "fiddle" diff --git a/Gemfile.lock b/Gemfile.lock index a0e4dac..c045993 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,44 +6,64 @@ PATH GEM remote: https://rubygems.org/ specs: - ast (2.4.2) + ast (2.4.3) debug (1.6.2) irb (>= 1.3.6) reline (>= 0.3.1) + fiddle (1.1.8) io-console (0.5.11) irb (1.4.1) reline (>= 0.3.0) - json (2.6.2) - minitest (5.16.3) - parallel (1.22.1) - parser (3.1.2.1) + json (2.21.2) + language_server-protocol (3.17.0.6) + lint_roller (1.1.0) + minitest (5.27.0) + ostruct (0.6.3) + parallel (1.28.0) + parser (3.3.12.0) ast (~> 2.4.1) + racc + prism (1.9.0) + racc (1.8.1) rainbow (3.1.1) - rake (13.0.6) - regexp_parser (2.5.0) + rake (13.4.2) + regexp_parser (2.13.0) reline (0.3.1) io-console (~> 0.5) - rexml (3.2.5) - rubocop (1.35.1) + rubocop (1.88.2) json (~> 2.3) - parallel (~> 1.10) - parser (>= 3.1.2.1) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) + parallel (>= 1.10) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) - rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.20.1, < 2.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.21.0) - parser (>= 3.1.1.0) - rubocop-performance (1.14.3) - rubocop (>= 1.7.0, < 2.0) - rubocop-ast (>= 0.4.0) - ruby-progressbar (1.11.0) - standard (1.16.1) - rubocop (= 1.35.1) - rubocop-performance (= 1.14.3) - unicode-display_width (2.3.0) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.50.0) + parser (>= 3.3.7.2) + prism (~> 1.7) + rubocop-performance (1.26.1) + lint_roller (~> 1.1) + rubocop (>= 1.75.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) + ruby-progressbar (1.13.0) + standard (1.56.0) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.88.0) + standard-custom (~> 1.0.0) + standard-performance (~> 1.8) + standard-custom (1.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.50) + standard-performance (1.9.0) + lint_roller (~> 1.1) + rubocop-performance (~> 1.26.0) + unicode-display_width (3.3.0) + unicode-emoji (~> 4.3) + unicode-emoji (4.3.0) PLATFORMS arm64-darwin-21 @@ -52,7 +72,9 @@ PLATFORMS DEPENDENCIES debug + fiddle minitest + ostruct put! rake standard From 11384b5de9d2cfea5bc167421faab3d6a031f60f Mon Sep 17 00:00:00 2001 From: Ross Brandes Date: Tue, 22 Sep 2026 11:16:10 -0400 Subject: [PATCH 3/3] Drop Ruby 2.6 from CI matrix, fix remaining lint dep conflicts CI's bundler-cache uses `bundle install --deployment`, which installs the exact versions in the single committed Gemfile.lock for every matrix job (no per-job re-resolution). That makes one lockfile the lowest common denominator across the whole Ruby matrix. minitest has no version supporting both Ruby 2.6 and 4.0 (versions through 5.26.0 cap at `< 4.0`; 5.26.1+ require `>= 2.7|3.1`), so 2.6 had to go. It's long EOL anyway. Bumped required_ruby_version to match. With the floor at 3.1, pulled rubocop/standard/parser up to current (avoiding the `prism` dependency, which needs Ruby >= 2.7, and newer `parallel`, which needs Ruby >= 3.3 - pinned `parallel < 2` and `minitest < 6` to stay compatible with 3.1). Also added `base64` as an explicit dependency: another default-gem-turned-bundled-gem that rubocop's HTML formatter needs but doesn't declare. --- .github/workflows/main.yml | 1 - Gemfile | 5 ++++- Gemfile.lock | 8 ++++++-- put.gemspec | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 87d2b50..511d671 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,6 @@ jobs: strategy: matrix: ruby: - - '2.6' - '3.1' - '3.3' - '3.4' diff --git a/Gemfile b/Gemfile index ca3ba2e..25fa92e 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,10 @@ gemspec gem "debug" gem "rake" -gem "minitest" +gem "minitest", "< 6" +gem "parallel", "< 2" gem "standard" gem "ostruct" gem "fiddle" +gem "racc" +gem "base64" diff --git a/Gemfile.lock b/Gemfile.lock index c045993..43108ee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,6 +7,7 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) + base64 (0.3.0) debug (1.6.2) irb (>= 1.3.6) reline (>= 0.3.1) @@ -26,7 +27,7 @@ GEM prism (1.9.0) racc (1.8.1) rainbow (3.1.1) - rake (13.4.2) + rake (13.0.6) regexp_parser (2.13.0) reline (0.3.1) io-console (~> 0.5) @@ -71,11 +72,14 @@ PLATFORMS x86_64-linux DEPENDENCIES + base64 debug fiddle - minitest + minitest (< 6) ostruct + parallel (< 2) put! + racc rake standard diff --git a/put.gemspec b/put.gemspec index d585e6d..9ef2c28 100644 --- a/put.gemspec +++ b/put.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |spec| spec.summary = "Put helps you write prioritized, multi-variate sort_by blocks" spec.homepage = "https://github.com/testdouble/put" spec.license = "MIT" - spec.required_ruby_version = ">= 2.6.0" + spec.required_ruby_version = ">= 3.1.0" spec.metadata["homepage_uri"] = spec.homepage spec.metadata["source_code_uri"] = spec.homepage