Bump Bundler to 4.0.15#74
Merged
Merged
Conversation
Bundler's major version tracks RubyGems, not the Ruby language -- 4.0.15 requires only Ruby >= 3.2.0 and RubyGems >= 3.4.1, both satisfied by the current Ruby 3.4.9 / RubyGems 3.6.9. No Ruby 4 needed. - BUNDLED WITH -> 4.0.15 in both Gemfile.lock and Gemfile.next.lock (adopted by running bundler 4 itself, not just editing the pin, so any lockfile-format change is captured -- here just the value indentation). - Gemfile: replace the deprecated `platforms: [:mingw, :mswin, :x64_mingw, :jruby]` on tzinfo-data with `[:windows, :jruby]`. Bundler 4 warns the individual windows platform symbols will be removed in favor of the `:windows` umbrella; this clears that warning. Verified on the host (bundler 4.0.15, ruby 3.4.9): re-lock is deprecation-free, dev and production boot clean, suite green (16 runs, 52 assertions, 0 failures, 0 errors). CI reads BUNDLED WITH via ruby/setup-ruby's bundler-cache, so it installs 4.0.15 to match.
JuanVqz
added a commit
that referenced
this pull request
Jul 7, 2026
* Upgrade Ruby 3.4.9 -> 4.0.4 Major-version Ruby hop. There is no 3.5-3.9 line -- Ruby went 3.4 -> 4.0 directly -- so this is the immediate next sequential hop, done with the full ruby-upgrade methodology (latest-patch baseline, deprecation sweep, floor audit, boot smoke, suite as the gate). Rails stays 8.1.3 on both boots. Ran the whole thing on the host per usual. Version lives in one place now (.ruby-version); the Gemfile (`ruby file: ...`) and CI (`ruby-version-file:`) follow it, so only .ruby-version, .tool-versions, and the Dockerfile tag needed editing. The one real change the sweep surfaced: - ostruct leaves Ruby's default gems in 4.0 (it becomes a bundled gem). Under Bundler that means `require "ostruct"` is no longer implicitly satisfied -- and Rails' own boot path (zeitwerk) requires it, so the app would fail to boot on 4.0. Added `gem "ostruct"` to the Gemfile (harmless on 3.4, required on 4.0). Lock picks up ostruct 0.6.3. Locks relocked on 4.0.4: RUBY VERSION 4.0.4, PLATFORMS ruby only. BUNDLED WITH kept at 4.0.15 -- the plain relock briefly dropped it to 4.0.10 (the bundler ruby 4.0.4 ships), restored via `bundle update --bundler=4.0.15` to avoid regressing the #74 pin. Verified on the host (ruby 4.0.4), both boots: - Deprecation sweep clean after the ostruct fix (the pre-bump 3.4.9 sweep had flagged exactly that removal). - bundle lock: no gem required_ruby_version conflicts. - Dev + production boot clean, zero deprecation warnings. - Suite green (16 runs, 52 assertions, 0 failures), rubocop (42 files, and it recognizes the 4.0 target) and reek both clean. * Drop the ostruct explanatory comment from the Gemfile
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.
What
Bumps Bundler 2.6.9 → 4.0.15. Bundler's major version tracks RubyGems, not the Ruby language — 4.0.15 requires only Ruby ≥ 3.2.0 and RubyGems ≥ 3.4.1, both satisfied by the current Ruby 3.4.9 / RubyGems 3.6.9. No Ruby 4 required.
Changes
BUNDLED WITH→4.0.15in bothGemfile.lockandGemfile.next.lock. Adopted by running Bundler 4 itself (bundle _4.0.15_ install), not just editing the pin, so any lockfile-format change is captured — here it was only the value indentation (3→2 spaces).Gemfile: replaced the deprecatedplatforms: [:mingw, :mswin, :x64_mingw, :jruby]ontzinfo-datawith[:windows, :jruby]. Bundler 4 warns those individual windows platform symbols will be removed in favor of the:windowsumbrella; this clears the warning.Verification (host, bundler 4.0.15, ruby 3.4.9, Postgres 16.13)
CI picks up the new bundler automatically:
ruby/setup-rubywithbundler-cache: truereadsBUNDLED WITHand installs 4.0.15 to match the lock.Not included
"Latest Ruby" is now 4.0.4 (there is no 3.5–3.9; Ruby went 3.4 → 4.0). That's a major-version hop and unrelated to this change, so it belongs in its own PR following the full upgrade methodology (deprecation sweep, floor audit, boot smoke, suite) — not bundled here.