Skip to content

Release 0.6.0: Rails 8.1 + Devise 5 + Ruby 3.3/3.4/4.0 support#74

Open
bartes wants to merge 3 commits into
mainfrom
release-0.6.0
Open

Release 0.6.0: Rails 8.1 + Devise 5 + Ruby 3.3/3.4/4.0 support#74
bartes wants to merge 3 commits into
mainfrom
release-0.6.0

Conversation

@bartes
Copy link
Copy Markdown
Contributor

@bartes bartes commented May 25, 2026

Release 0.6.0

Expands the supported runtime matrix and modernizes internals.

Supported versions

  • Ruby: 3.2 – 4.0 (minimum floor raised from 3.0)
  • Rails: 6.0 – 8.1 (was 6.0 – 8.0)
  • Devise: 4.3+ and 5.x (was 4.3 – 4.x)

Changes

  • Add Rails 8.1 support and CI rows.
  • Allow Devise 5.x (devise >= 4.3, < 6.0); exercised against Devise 5 on the Rails 8.1 rows.
  • Add Ruby 3.3 / 3.4 / 4.0 to the matrix; coverage now uploaded from the newest combination.
  • Bump minimum required Ruby version to 3.2.
  • Replace deprecated ActiveSupport::Configurable with plain Ruby accessors. Public configuration API unchanged; the Rails 8.2 deprecation warning is gone.
  • Drop the appraisal development dependency in favor of hand-maintained gemfiles/*.gemfile.
  • Refresh development Gemfile.lock against the new stack (Bundler 2.7.2).
  • Minor: fix bin/console, remove the beta disclaimer from the README, address two standardrb 1.54 offenses.

What & why
----------
Modernizes the supported stack and removes the Rails 8.2 deprecation path:

- Add support for Rails 8.1 (new `gemfiles/rails_8.1.gemfile`, CI matrix rows)
- Add support for Devise 5 — gemspec widened to `< 6.0`; pinned to `~> 5.0`
  in the Rails 8.1 gemfile so CI actually exercises it. No source changes
  needed: the integration uses no APIs removed in Devise 5.
- Add Ruby 3.3, 3.4, and 4.0 to the CI matrix; coverage upload moved to the
  newest Ruby × Rails row.
- Replace deprecated `ActiveSupport::Configurable` with plain Ruby attribute
  accessors. Same public API, no Rails coupling, no Rails 8.2 deprecation
  warning. Also fixes `Logger.new("/dev/null")` → `Logger.new(File::NULL)`.
- Drop the `appraisal` development dependency in favor of hand-maintained
  `gemfiles/*.gemfile`. CI was already invoking them directly via
  `BUNDLE_GEMFILE`, so this is purely a tooling cleanup.
- Refresh dev `Gemfile` / `Gemfile.lock` against the new stack
  (railties ~> 8.1, devise ~> 5.0, sqlite3 ~> 2.1, Bundler 2.7.2).
- Fix `bin/console` (was `require "castle/devise"` — broken path).
- Drop "currently in beta" disclaimer from the README.
- Fix two pre-existing standardrb 1.54 violations (ternary parens).

Test plan
---------
- `bundle exec rake` — 107 examples, 0 failures, 99.0% coverage
- `bundle exec standardrb` — clean
- `bin/console` — no deprecation warnings, prints version 0.6.0
- CI matrix verifies all 16 Ruby × Rails combinations on push.
bartes added 2 commits May 25, 2026 14:39
- Remove `spec/dummy_app/.ruby-version` (stale 2.6.5 from 2019; the actual
  Ruby comes from CI / asdf today).
- Remove `spec/dummy_app/config/spring.rb` (Spring was removed from the
  Rails default stack in 7.0; the file is loaded by nothing).
- Remove `spec/dummy_app/app/javascript/packs/application.js` (Webpacker
  convention, deprecated since Rails 7; we don't compile assets).
- Untrack accidentally-committed `spec/dummy_app/log/development.log` and
  `spec/dummy_app/tmp/development_secret.txt`. They've been in `.gitignore`
  for ages but predated the rule.
- Bump `config.load_defaults` from a hard-coded `5.2` to
  `Rails::VERSION::STRING.to_f`, so each appraisal exercises that Rails
  version's own framework defaults instead of the long-EOL 5.2 ones.
The old workflow used:
- `actions/checkout@v1` (Node 12-based; deprecated by GitHub)
- `SennaLabs/action-standardrb@v0.0.3` (third-party, last released 2020)
  pinning `standardrb 1.1.6`
- a `sudo chown` workaround required by the third-party action's container

The repo's own `Gemfile.lock` is on `standard 1.54.0`, so CI was lint-checking
the code against a ruleset five years older than what we use locally.

Replace with the standard pattern: checkout, setup Ruby with `bundler-cache`,
then `bundle exec standardrb`. This guarantees CI lints against the same
`standard` version that's declared in the dev Gemfile, on supported runners.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants