実行中のRubyと異なるバージョンのRubyで同じコードを呼び出す
Rubyのバージョン切り替えをasdf
で行う
$ brew install asdf
$ asdf install ruby 3.0.5
$ asdf shell ruby 3.0.5
$ asdf current ruby
ruby 3.0.5 ASDF_RUBY_VERSION environment variable
外部コマンド内でバージョンを切り替えて再実行する
# Rakefile
def script
if File.exist?("#{IO.popen("brew --prefix asdf", &:read).chomp}/libexec/asdf.sh")
"#{IO.popen("brew --prefix asdf", &:read).chomp}/libexec/asdf.sh"
else
"#{IO.popen("brew --prefix asdf", &:read).chomp}/asdf.sh"
end
end
task :default do
puts "RUBY_VERSION=#{RUBY_VERSION}"
end
task :latest do
exec ". #{script} && asdf shell ruby 3.1.3 && rake" if Gem::Version.new(RUBY_VERSION) < "3.1"
Rake::Task["default"].invoke
end
$ rake
RUBY_VERSION=3.0.5
$ rake latest
RUBY_VERSION=3.1.3