Skip to content

Bump Bundler to 4.0.15#74

Merged
JuanVqz merged 1 commit into
mainfrom
feature/bundler-4
Jul 7, 2026
Merged

Bump Bundler to 4.0.15#74
JuanVqz merged 1 commit into
mainfrom
feature/bundler-4

Conversation

@JuanVqz

@JuanVqz JuanVqz commented Jul 7, 2026

Copy link
Copy Markdown
Member

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 WITH4.0.15 in both Gemfile.lock and Gemfile.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 deprecated platforms: [:mingw, :mswin, :x64_mingw, :jruby] on tzinfo-data with [:windows, :jruby]. Bundler 4 warns those individual windows platform symbols will be removed in favor of the :windows umbrella; this clears the warning.

Verification (host, bundler 4.0.15, ruby 3.4.9, Postgres 16.13)

  • Re-lock under Bundler 4 is deprecation-free.
  • Dev and production boot clean.
  • Suite green — 16 runs, 52 assertions, 0 failures, 0 errors.

CI picks up the new bundler automatically: ruby/setup-ruby with bundler-cache: true reads BUNDLED WITH and 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.

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 JuanVqz merged commit 51440a1 into main Jul 7, 2026
2 checks passed
@JuanVqz JuanVqz deleted the feature/bundler-4 branch July 7, 2026 21:35
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant