Repository navigation
fix(gemspec): declare the gems Ruby 4 unbundled - #2112
Open
petr-klemsinsky wants to merge 1 commit into
Open
petr-klemsinsky wants to merge 1 commit into
petr-klemsinsky wants to merge 1 commit into
Conversation
lib/ requires base64, benchmark, csv and logger directly. They were default gems up to Ruby 3.0 and are bundled gems from Ruby 3.4/4.0 on, so they still resolve standalone but are invisible under bundler unless a gemspec asks for them. On Fedora 44 agents this takes out every consumer that loads gooddata through bundler: bench_middleware dies on LoadError before anything runs. Same shape as the net-smtp block above. JIRA: INFRA-4765 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Problem
lib/requiresbase64,benchmark,csvandloggerdirectly, and the gemspec declares none of them. They were default gems up to Ruby 3.0 and are bundled gems from Ruby 3.4/4.0 on — a bundled gem still resolves for a plainruby -e, which is why this is easy to miss, but underbundle execit is invisible unless some gemspec asks for it.GoodData's Fedora 44 Jenkins agents ship Ruby 4.0.7, so any consumer that loads
gooddatathrough bundler dies before it runs anything:That is how it surfaced:
gdc-bear'scmdline-tool-testsfails on every spec when the job lands on the Fedora agent.Change
Four
s.add_dependencylines, same shape and for the same reason as thenet-smtp/net-imap/net-popblock right above, which was added when Ruby 3.1 unbundled those.Unconditional rather than guarded on
RUBY_VERSION: all four resolve as explicit dependencies on Ruby 3.0.7 too (base64 0.3.0,benchmark 0.5.0,csv 3.3.6,logger 1.7.0), so there is no version to guess at.jsonis deliberately not in the list — it is the one of the five that still resolves underbundle execon Fedora 44, andjson_pureis already a dependency.Verification
Which of the directly-required libraries actually fail, measured under
bundle execin a bundle that does not declare them, onfedora:44:End to end:
gdc-bear'scmdline-tool-testson Ruby 4.0.7 with its unmodified Gemfile andgooddatapointed at this branch — the suite now loads all the way through, and the only remaining failure is the real SSH connection to the staging cluster, which no container can satisfy:Without this change the same run stops at
cannot load such file -- benchmark.Related
gooddata/gdc-bear#7787 works around it from the consumer side so the checklist can go green before this lands; this is the durable fix. gooddata/ci-infra#11506 fixes the separate Bundler 4 half of the same breakage.
JIRA: INFRA-4765
🤖 Generated with Claude Code
Summary by CodeRabbit