Skip to content

Drop Rails 7.x, move to non-EoL Ruby, publish from a tag - #37

Merged
kvokka merged 3 commits into
masterfrom
drop-rails-7
Aug 23, 2026
Merged

Drop Rails 7.x, move to non-EoL Ruby, publish from a tag#37
kvokka merged 3 commits into
masterfrom
drop-rails-7

Conversation

@kvokka

@kvokka kvokka commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Drops Rails 7.x, moves the test matrix to non-EoL Ruby, and adds a tag-driven
RubyGems release.

Support matrix

before after
Rails / ActiveRecord 7.1, 7.2, 8.0, 8.1 8.0, 8.1
Ruby 3.2, 3.3, 3.4 3.3, 3.4, 4.0
required_ruby_version >= 3.1.0 >= 3.3.0
activerecord dependency unconstrained >= 8.0
sqlite3 in the root Gemfile >= 1.4 ~> 2.0

Rails 7.1 is EoL since 2025-10-01, Rails 7.2 since 2026-08-09, Ruby 3.2 since
2026-03-31. The appraisal gemfiles already carried sqlite3 ~> 2.0; the root
Gemfile was the last place holding 1.x.

Release workflow

.github/workflows/release.yml runs on a v* tag: it checks the tag against
PpSql::VERSION, builds the gem, pushes it to RubyGems.org and creates the
GitHub release. The push authenticates through RubyGems trusted publishing over
the Actions OIDC token, so the repository stores no API key and the gem keeps
rubygems_mfa_required.

Before the first tag, a trusted publisher has to exist for the gem on
RubyGems.org: owner kvokka, repository pp_sql, workflow release.yml,
environment empty.

Rakefile

Ruby 4.0 removed rdoc from the default gems, so require 'rdoc/task' made
rake fail on the activerecord-only gemfiles. The RDoc task is gone;
RubyGems.org builds the documentation of the published gem itself.

Verification

Every matrix cell — Ruby 3.3, 3.4 and 4.0 against rails and activerecord 8.0
and 8.1 — ran in the official ruby images: 13 tests on the rails gemfiles, 11 on
the activerecord ones, no failures.

Version

This ships as 2.3.0, the first release since 2.1.0.

kvokka and others added 3 commits August 23, 2026 18:45
Rails 7.1 went EoL on 2025-10-01 and 7.2 on 2026-08-09, Ruby 3.2 on
2026-03-31. What is left is Rails / ActiveRecord 8.0 and 8.1 on Ruby 3.3,
3.4 and 4.0, which lets sqlite3 sit at 2.x in every Gemfile.

Ruby 4.0 dropped rdoc from the default gems, so the Rakefile's RDoc task
made `rake` fail on the activerecord-only gemfiles; RubyGems.org builds
the published documentation itself.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pushing a `v*` tag builds the gem, pushes it and cuts the GitHub release.
The push authenticates through RubyGems trusted publishing, so the
repository holds no API key and the gem keeps `rubygems_mfa_required`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@kvokka
kvokka merged commit 4e861ef into master Aug 23, 2026
17 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 014f3da326

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- name: Configure RubyGems credentials
uses: rubygems/configure-rubygems-credentials@dc5a8d8553e6ee01fc26761a49e99e733d17954a # v2.1.0
- name: Push the gem
run: gem push pp_sql-*.gem

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Make release creation retryable after publishing

If gh release create fails after the gem is successfully published—for example, due to a transient GitHub API or asset-upload failure—rerunning this workflow stops here because RubyGems rejects publishing the same name/version again, so the GitHub release can never be retried through the workflow. gem help push confirms that this command uploads the gem and adds it to the index, while gh release create --help describes release creation as a separate later operation. Make the publication/release sequence idempotent, such as by detecting an already-published gem and continuing to the release step.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant