Skip to content

Install the bare fixture's pods through bundler - #135

Merged
janicduplessis merged 2 commits into
mainfrom
fix/issue-133-bundler-pods
Aug 31, 2026
Merged

Install the bare fixture's pods through bundler#135
janicduplessis merged 2 commits into
mainfrom
fix/issue-133-bundler-pods

Conversation

@janicduplessis

@janicduplessis janicduplessis commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

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 with Gem::GemNotFoundException — reproduced with cd <fixture>/ios && pod --version, while BUNDLE_GEMFILE=/dev/null pod --version succeeds. 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 install in engine/deps.ts, with its curated error taxonomy) is deliberate and untouched — though doctor's human remedy says bundle exec while the engine runs plain pod, which is a product question worth its own issue someday.

Test plan

  • To attach before ready: a full loop bare-ios run on the rvm machine that reproduced the failure, expecting green through the bundler path.
  • CI's bare-iOS jobs exercise it on every nightly.

Fixes #133


Validation evidence (attached per review)

  • Live run green on the rvm machine that reproduced the failure: loop bare-ios completed exit 0 (2026-08-31T17:33-17:38Z), through bundle install -> bundle exec pod install at fixture setup and a full worktree loop after it.
  • The review's [High] concern — the product's own plain pod install hitting the same activation failure — did not materialize: the same run's worktree builds ran engine/deps.ts's plain pod (no BUNDLE_GEMFILE neutralization in the env) and passed. The harness-context failure evidently needs the shell/hook context; stim's no-shell spawn does not trip it. No companion change needed on this evidence.
  • Real reproduction transcript (previously failing fixture-setup, plain pod, rvm ruby 3.4.8):
    Gem.find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
      from .../rubygems.rb:288:in 'Gem.activate_bin_path'
      from ~/.rvm/gems/ruby-3.4.8/bin/pod:25:in '<main>'
    
    Real fixture Gemfile (RN 0.87 template): 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 with cd <fixture>/ios && pod --version; BUNDLE_GEMFILE=/dev/null pod --version succeeds.
  • CI: the ios e2e job now runs 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.

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.
@janicduplessis
janicduplessis marked this pull request as ready for review August 31, 2026 17:53
@janicduplessis
janicduplessis merged commit d8b6fa7 into main Aug 31, 2026
5 checks passed
@janicduplessis
janicduplessis deleted the fix/issue-133-bundler-pods branch August 31, 2026 17:53
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.

native e2e: bare fixture pod install fails under rvm's bundler integration

1 participant