Repository navigation
Remove what 3.7.0 deprecated (4.0.0) - #48
Merged
Merged
Conversation
The versions 3.7.0 announced. CI now covers every combination the gemspec allows rather than a wider range, so the two are the same set.
Deprecated in 3.7.0. docs/usage.md now documents invoking rake patches:run from the deployment process, keeping the Sidekiq restart caveat.
Deprecated in 3.7.0. Patches::Notifier requires it inside a begin/rescue, so the defined?(Slack) guard it always had now does something. Slack-dependent specs move under spec/slack/ so the suite runs without the gem, mirroring Sidekiq.
Deprecated in 3.7.0. Sidekiq has provided the constant since 6.3, so the Patches.sidekiq_job_module shim and its Sidekiq::Worker fallback go.
The gemspec floors enforce what the warning announced. Patches.deprecator stays - applications were told to configure it to silence 3.7.0's warnings - now pointing at the next major.
The optional axis tested each gem absent but never both, which is the common case for a plain Rails app. Also fixes the exclude logic: --exclude-pattern does not accumulate, so the patterns must be one comma-separated value.
railties and activerecord are hard dependencies, and the engine, the install migration and default_path all assume a Rails application, so the defined?(Rails) guards described a mode nobody used. One of them read defined?(:Rails) - always truthy - and went unnoticed until 3.6.3, which is proof enough that the path was never exercised. lib/patches.rb now requires rails explicitly: requiring the engine without it fails, because railties expects ActiveSupport's core extensions to be loaded first. Sidekiq and slack-notifier stay conditional - those are genuinely optional.
It said [5.0], which the Rails floor now makes inconsistent. Not only cosmetic: under [5.0] compatibility a fresh table gets datetime columns without precision, where [7.2] gets datetime(6), matching what a modern Rails app's own schema uses. Existing installs are untouched - they ran their own copy of this file long ago. A spec asserts the declared release is no older than the railties floor, so the two cannot drift apart again.
The heading carries `unreleased` until the day it ships; RELEASING.md step 2 now says to replace it with the date then. 3.7.0's entry is corrected to 2026-09-17, the day it merged and published, rather than 2026-09-10 when it was drafted.
vidishaweddy-readytech
approved these changes
Sep 18, 2026
|
mark-garjas-rdy
approved these changes
Sep 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

0 New Issues
0 Fixed Issues
0 Accepted Issues
Removes everything 3.7.0 deprecated. Nothing here is a surprise for anyone who
upgraded to 3.7.0 and cleared its warnings — every breaking change below was
announced a release ahead, which was the whole point of spending a minor on it.
Breaking
slack-notifieris no longer a dependencygem 'slack-notifier'if you setconfig.use_slackbundle exec rake patches:runfrom your deployment processSidekiq::JobTwo smaller ones, both consequences of the above:
railtiesandactiverecordwere always hard dependencies and the gem ships an engine, so the
defined?(Rails)checks described a mode nobody used — one of them readdefined?(:Rails), always truthy, and went unnoticed until 3.6.3.lib/patches.rbnow requiresrails, because loading the engine without itfails on
delegate_missing_to.ActiveRecord::Migration[7.2]. Notcosmetic:
[5.0]compatibility produceddatetimetimestamp columns,[7.2]produces
datetime(6), matching a modern Rails schema. Fresh installs only —existing tables are untouched, since consumers ran their own copy of the file
long ago.
Patches.deprecatorstays, with its horizon moved to the next major.Applications were told to configure it to silence 3.7.0's warnings, so removing
it would break their initializers unannounced.
Nothing else changed: patch classes,
Patches::Base, the generator, the raketasks, the configuration and the
patches_patchestable are all as they were.Verification
CI covers every combination the gemspec allows — 12 cells, Ruby 3.2–4.0 against
Rails 7.2–8.1 — which is new: before 4.0 the matrix and the floors were
different sets. Plus a leg for each optional-integration state, including one
nothing covered before:
slack-notifierabsentAll 19 configurations pass locally as well.
Reviewing
Nine commits, one idea each, with
Release 4.0.0last. The changelog headingreads
## [4.0.0] - unreleaseddeliberately —RELEASING.mdstep 2 now says toreplace that with the date on release day, because 3.7.0 shipped a week after
its entry was drafted and carried the drafting date until someone noticed. That
correction is in here too.
🤖 Generated with Claude Code