Skip to content

ci: Use Ruby 4 for development tooling - #319

Merged
jbeckwith-oai merged 3 commits into
mainfrom
codex/latest-ruby-tooling
Jul 31, 2026
Merged

ci: Use Ruby 4 for development tooling#319
jbeckwith-oai merged 3 commits into
mainfrom
codex/latest-ruby-tooling

Conversation

@jbeckwith-oai

@jbeckwith-oai jbeckwith-oai commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • pin the contributor default to Ruby 4.0.6
  • run lint, packaging, and release jobs on Ruby 4.0
  • fix the Ruby generator problem tied to the repository's outdated development Ruby default
  • keep Ruby 3.2 in the compatibility test matrix and retain the existing gem/runtime syntax floor
  • update Bundler, Minitest 5, and Unicode Emoji only as required for Ruby 4 compatibility

Why

Routine development and release tooling should exercise the newest supported Ruby. The outdated tooling default was also causing problems for the Ruby generator, so aligning these defaults fixes generator runs while minimum-runtime compatibility remains an explicit matrix responsibility.

Validation

  • Ruby 4.0.6: 467 tests, 1,512 assertions
  • Ruby 4.0.6: RuboCop, Sorbet, and Steep
  • Ruby 4.0.6: gem build
  • Ruby 3.2.11: 467 tests, 1,512 assertions
  • bundler-audit: no vulnerabilities across 1,221 advisories

This PR intentionally does not change the Ruby 3.2 support floor.

Run contributor defaults, lint, packaging, and release tooling on Ruby 4 while retaining Ruby 3.2 in the compatibility matrix and syntax floor.

Pin Minitest to the Ruby-4-compatible 5.27 line to avoid the unrelated Minitest 6 migration, and regenerate the lockfile with Bundler 4.
Copilot AI review requested due to automatic review settings July 30, 2026 22:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the repository’s contributor/devtooling baseline to Ruby 4 while keeping Ruby 3.2 in the CI compatibility matrix, plus minimal dependency bumps needed for Ruby 4 compatibility.

Changes:

  • Set the default contributor Ruby to 4.0.6 via .ruby-version.
  • Run lint, packaging, and release workflows on Ruby 4.0.
  • Update dev/test dependencies (notably Minitest) and refresh the lockfile (including a Bundler major-version bump).

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
Gemfile.lock Bumps Minitest + unicode-emoji and updates the lockfile’s Bundler version.
Gemfile Pins minitest to ~> 5.27 for Ruby 4 compatibility.
.ruby-version Updates the default Ruby for contributors to 4.0.6.
.github/workflows/create-releases.yml Runs release tooling on Ruby 4.0.
.github/workflows/ci-checks.yml Runs lint/package jobs on Ruby 4.0 while keeping a multi-Ruby test matrix.
Comments suppressed due to low confidence (1)

.github/workflows/ci-checks.yml:83

  • Same as the lint job: with the lockfile now requiring Bundler 4.0.17, the workflow should ensure that Bundler version is installed before bundle install to avoid CI failures due to a mismatched default Bundler.
      - name: Set up Ruby
        uses: ruby/setup-ruby@c515ec17f69368147deb311832da000dd229d338 # v1
        with:
          ruby-version: '4.0'
          bundler-cache: false

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci-checks.yml
Comment thread .github/workflows/create-releases.yml
@jbeckwith-oai
jbeckwith-oai marked this pull request as ready for review July 30, 2026 22:37
@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner July 30, 2026 22:37
@openai-sdks

openai-sdks Bot commented Jul 30, 2026

Copy link
Copy Markdown

OkTest Summary

237/237 SDK tests passed in 10.447s for Ruby SDK PR #319.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 219ms
tests/chat-completions-create.test.ts ✅ Passed 304ms
tests/chat-completions-stream.test.ts ✅ Passed 135ms
tests/files-content-binary.test.ts ✅ Passed 329ms
tests/files-create-multipart.test.ts ✅ Passed 307ms
tests/files-list-pagination.test.ts ✅ Passed 160ms
tests/initialize-config.test.ts ✅ Passed 187ms
tests/instance-isolation.test.ts ✅ Passed 293ms
tests/models-list.test.ts ✅ Passed 322ms
tests/responses-background-lifecycle.test.ts ✅ Passed 352ms
tests/responses-body-method-errors.test.ts ✅ Passed 650ms
tests/responses-cancel-timeout.test.ts ✅ Passed 324ms
tests/responses-cancel.test.ts ✅ Passed 290ms
tests/responses-compact-retries.test.ts ✅ Passed 370ms
tests/responses-compact.test.ts ✅ Passed 314ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 241ms
tests/responses-create-advanced.test.ts ✅ Passed 283ms
tests/responses-create-disconnect.test.ts ✅ Passed 166ms
tests/responses-create-errors.test.ts ✅ Passed 394ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 142ms
tests/responses-create-retries.test.ts ✅ Passed 380ms
tests/responses-create-stream-failures.test.ts ✅ Passed 144ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 236ms
tests/responses-create-stream-wire.test.ts ✅ Passed 2.03s
tests/responses-create-stream.test.ts ✅ Passed 159ms
tests/responses-create-terminal-states.test.ts ✅ Passed 387ms
tests/responses-create-timeout.test.ts ✅ Passed 321ms
tests/responses-create.test.ts ✅ Passed 434ms
tests/responses-delete.test.ts ✅ Passed 406ms
tests/responses-input-items-errors.test.ts ✅ Passed 197ms
tests/responses-input-items-list.test.ts ✅ Passed 176ms
tests/responses-input-items-options.test.ts ✅ Passed 270ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 321ms
tests/responses-input-tokens-count.test.ts ✅ Passed 341ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.252s
tests/responses-not-found-errors.test.ts ✅ Passed 452ms
tests/responses-parse.test.ts ✅ Passed 261ms
tests/responses-retrieve-retries.test.ts ✅ Passed 448ms
tests/responses-retrieve.test.ts ✅ Passed 346ms
tests/responses-stored-method-errors.test.ts ✅ Passed 942ms
tests/retry-behavior.test.ts ✅ Passed 1.923s
tests/sdk-error-shape.test.ts ✅ Passed 521ms

View OkTest run #30649906248

SDK merge (22417b066aa2) · head (749b3febd329) · base (692e6c7cab56) · OkTest (91635c6a2723)

@HAYDEN-OAI HAYDEN-OAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One substantive tooling compatibility issue: the pinned ruby/setup-ruby revision does not support the new Ruby 4.0.6 contributor default, breaking the Stainless artifact path and leaving other Ruby 4 jobs on 4.0.2. See the inline comment for the exact failure and fix.

Comment thread .ruby-version
Copilot AI review requested due to automatic review settings July 31, 2026 00:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated no new comments.

@jbeckwith-oai jbeckwith-oai added the generator Touches generated SDK files label Jul 31, 2026

@HAYDEN-OAI HAYDEN-OAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed the current head (ef2911b). The earlier setup-ruby compatibility issue is resolved consistently across every workflow reference. The change keeps the Ruby 3.2 runtime support contract and compatibility matrix intact while moving contributor, lint, package, and release tooling to Ruby 4; the Minitest 5.x boundary is explicit, and the lockfile churn is limited to the expected tooling updates. I found no remaining structural, boundary, branching, file-size, abstraction, or maintainability concerns.

@HAYDEN-OAI HAYDEN-OAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed exact head ef2911ba5bbf39e50cc9dba35d3987d4d7b6c351. The earlier setup-ruby compatibility finding is resolved: all five pins use 95ef2b042f9d7a56d8268cba8559e2842e2ad01b, whose source and bundled action data include Ruby 4.0.6; it also preserves .ruby-version resolution and lockfile-driven Bundler 4.0.17 installation. The full change keeps the Ruby 3.2 runtime contract and test matrix intact, with dependency churn limited to the intended tooling updates. I found no substantive issues.

Copilot AI review requested due to automatic review settings July 31, 2026 17:06
@jbeckwith-oai jbeckwith-oai changed the title Use Ruby 4 for development tooling ci: Use Ruby 4 for development tooling Jul 31, 2026
@jbeckwith-oai
jbeckwith-oai enabled auto-merge (squash) July 31, 2026 17:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated no new comments.

Suppressed comments (5)

.github/workflows/ci-checks.yml:83

  • The repo is pinned to Ruby 4.0.6 via .ruby-version, but this job uses the floating minor '4.0'. Pinning to 4.0.6 here makes packaging/build outputs more deterministic across time.
      - name: Set up Ruby
        uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1
        with:
          ruby-version: '4.0'
          bundler-cache: false

.github/workflows/ci-checks.yml:64

  • The repo is pinned to Ruby 4.0.6 via .ruby-version, but this job uses the floating minor '4.0'. Pinning to 4.0.6 here makes lint results reproducible and avoids surprise CI breakage on future 4.0.x patch releases.
      - name: Set up Ruby
        uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1
        with:
          ruby-version: '4.0'
          bundler-cache: false

.github/workflows/ci-checks.yml:106

  • The test matrix includes the floating minor '4.0', which will track future 4.0.x patch releases, while .ruby-version is pinned to 4.0.6. If the intent is a pinned toolchain, consider using 4.0.6 in the matrix for consistency/reproducibility.
      - name: Set up Ruby
        uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1
        with:
          ruby-version: ${{ matrix.ruby-version }}
          bundler-cache: false

.github/workflows/ci-checks.yml:33

  • This job omits ruby-version, so it will implicitly track .ruby-version (now 4.0.6) while other jobs in this workflow pin to '4.0'. Making the version explicit here avoids mixed semantics and unexpected changes when .ruby-version is updated again.

This issue also appears in the following locations of the same file:

  • line 60
  • line 79
  • line 102
      - name: Set up Ruby
        uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1
        with:
          bundler-cache: false

.github/workflows/create-releases.yml:46

  • .ruby-version is pinned to 4.0.6, but this workflow uses the floating minor '4.0'. Pinning to 4.0.6 makes release tooling more reproducible and reduces the chance of a patch-level Ruby change breaking releases unexpectedly.
        with:
          bundler-cache: false
          ruby-version: '4.0'

@jbeckwith-oai
jbeckwith-oai merged commit 405d709 into main Jul 31, 2026
14 checks passed
@jbeckwith-oai
jbeckwith-oai deleted the codex/latest-ruby-tooling branch July 31, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

generator Touches generated SDK files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants