In particular, bundle install
failed with the infamous Your Ruby version is 3.1.2, but your Gemfile specified 3.1.3
.
I tested several ideas that didn’t work:
- running
rbenv rehash
, separately or from the samesystem
call - setting
RBENV_VERSION
and/orRUBY_VERSION
while executing the command:system({"RBENV_VERSION" => X.Y.Z}, command)
- setting
RBENV_VERSION
and/orRUBY_VERSION
before launching the new command
What finally worked, with the minimum impact, was to prepend the PATH
with rbenv
’s target version executable before running bundle install
.
version = "3.1.3"
`rbenv local #{version}`
# Force rbenv to use the new version
ENV["PATH"] = "#{ENV["HOME"]}/.rbenv/versions/#{version}/bin:#{ENV["PATH"]}"
# run scripts, for instance:
`bundle install`
# Reset PATH
ENV["PATH"] = ENV["PATH"].split(":")[1..].join(":")
Side-note: we can’t use prepend
to change ENV["PATH"]
because it is frozen.