Install the bare fixture's pods through bundler - #135
Merged
Conversation
The RN template's Gemfile pins cocoapods and activesupport, and its own run instructions are bundle install + bundle exec pod install. Running plain pod for fixture setup dodged those pins and tripped RubyGems' Gemfile-aware activation under rvm (Gem::GemNotFoundException), which no CI runner reproduces because none use rvm. Bundler-first, hard fail: a fixture whose pods cannot be pinned is not the fixture the template describes. Fixes #133
The e2e ios jobs get ruby/setup-ruby so bundler and a Gemfile-satisfying ruby exist on the runner; both die messages carry exit/signal/error.
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.
Description
The bare-iOS fixture setup ran plain
pod install. On an rvm machine, RubyGems' Gemfile-aware activation reads the RN template's Gemfile from cwd and fails its constraint resolution withGem::GemNotFoundException— reproduced withcd <fixture>/ios && pod --version, whileBUNDLE_GEMFILE=/dev/null pod --versionsucceeds. CI never sees it (no rvm). Beyond the crash, plain pod also dodges the version pins the template's Gemfile exists to enforce, which is the same pod-version-skew class that makes committed Podfile.locks unreproducible across machines.Solution
The fixture-setup step impersonates the developer who created the app, and the template's own printed instructions are
bundle install+bundle exec pod install— so do exactly that, before the fixture's initial commit (the Gemfile.lock lands in the fixture like a real repo). Bundler-first with a hard fail rather than a plain-pod fallback: a fixture whose pods cannot be pinned is not the fixture the template describes.Scope note: this changes only harness fixture setup. Stim's product behavior (plain
pod installinengine/deps.ts, with its curated error taxonomy) is deliberate and untouched — though doctor's human remedy saysbundle execwhile the engine runs plain pod, which is a product question worth its own issue someday.Test plan
loop bare-iosrun on the rvm machine that reproduced the failure, expecting green through the bundler path.Fixes #133
Validation evidence (attached per review)
loop bare-ioscompleted exit 0 (2026-08-31T17:33-17:38Z), throughbundle install->bundle exec pod installat fixture setup and a full worktree loop after it.pod installhitting the same activation failure — did not materialize: the same run's worktree builds ranengine/deps.ts's plain pod (noBUNDLE_GEMFILEneutralization in the env) and passed. The harness-context failure evidently needs the shell/hook context; stim's no-shellspawndoes not trip it. No companion change needed on this evidence.ruby ">= 2.6.10",gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1',gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'. Reproducible on this machine withcd <fixture>/ios && pod --version;BUNDLE_GEMFILE=/dev/null pod --versionsucceeds.ruby/setup-ruby@v1(ruby 3.4) so bundler and a Gemfile-satisfying ruby exist on the runner; previously the harness leaned on the image's preinstalled CocoaPods.