Do not install Bundler if RubyGems was updated

* Updating RubyGems will install Bundler as a side effect.
* Fixes https://github.com/ruby/setup-ruby/issues/326
This commit is contained in:
Benoit Daloze
2022-05-02 19:39:53 +02:00
parent e404913b05
commit d6a695ac2a
4 changed files with 22 additions and 9 deletions
+2 -1
View File
@@ -15,7 +15,8 @@ inputs:
For 'default', no action is taken and the version of RubyGems that comes with Ruby by default is used.
For 'latest', `gem update --system` is run to update to the latest RubyGems version.
Similarly, if a version number is given, `gem update --system <version>` is run to update to that version of RubyGems, as long as that version is newer than the one provided by default.
Defaults to 'default'.
required: false
default: 'default'
bundler:
description: |
The version of Bundler to install. Either 'none', 'latest', 'Gemfile.lock', or a version number (e.g., 1, 2, 2.1, 2.1.4).
+6 -1
View File
@@ -50,9 +50,14 @@ async function afterLockFile(lockFile, platform, engine, rubyVersion) {
}
}
export async function installBundler(bundlerVersionInput, lockFile, platform, rubyPrefix, engine, rubyVersion) {
export async function installBundler(bundlerVersionInput, rubygemsInputSet, lockFile, platform, rubyPrefix, engine, rubyVersion) {
let bundlerVersion = bundlerVersionInput
if (rubygemsInputSet && bundlerVersion === 'default') {
console.log('Using the Bundler installed by updating RubyGems')
return 'unknown'
}
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
bundlerVersion = readBundledWithFromGemfileLock(lockFile)
Generated Vendored
+10 -4
View File
@@ -64,9 +64,14 @@ async function afterLockFile(lockFile, platform, engine, rubyVersion) {
}
}
async function installBundler(bundlerVersionInput, lockFile, platform, rubyPrefix, engine, rubyVersion) {
async function installBundler(bundlerVersionInput, rubygemsInputSet, lockFile, platform, rubyPrefix, engine, rubyVersion) {
let bundlerVersion = bundlerVersionInput
if (rubygemsInputSet && bundlerVersion === 'default') {
console.log('Using the Bundler installed by updating RubyGems')
return 'unknown'
}
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
bundlerVersion = readBundledWithFromGemfileLock(lockFile)
@@ -60882,7 +60887,8 @@ async function setupRuby(options = {}) {
await common.measure('Print Ruby version', async () =>
await exec.exec('ruby', ['--version']))
if (inputs['rubygems'] !== 'default') {
const rubygemsInputSet = inputs['rubygems'] !== 'default'
if (rubygemsInputSet) {
await common.measure('Updating RubyGems', async () =>
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix))
}
@@ -60895,11 +60901,11 @@ async function setupRuby(options = {}) {
}
const [gemfile, lockFile] = bundler.detectGemfiles()
let bundlerVersion = "unknown"
let bundlerVersion = 'unknown'
if (inputs['bundler'] !== 'none') {
bundlerVersion = await common.measure('Installing Bundler', async () =>
bundler.installBundler(inputs['bundler'], lockFile, platform, rubyPrefix, engine, version))
bundler.installBundler(inputs['bundler'], rubygemsInputSet, lockFile, platform, rubyPrefix, engine, version))
}
if (inputs['bundler-cache'] === 'true') {
+4 -3
View File
@@ -66,7 +66,8 @@ export async function setupRuby(options = {}) {
await common.measure('Print Ruby version', async () =>
await exec.exec('ruby', ['--version']))
if (inputs['rubygems'] !== 'default') {
const rubygemsInputSet = inputs['rubygems'] !== 'default'
if (rubygemsInputSet) {
await common.measure('Updating RubyGems', async () =>
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix))
}
@@ -79,11 +80,11 @@ export async function setupRuby(options = {}) {
}
const [gemfile, lockFile] = bundler.detectGemfiles()
let bundlerVersion = "unknown"
let bundlerVersion = 'unknown'
if (inputs['bundler'] !== 'none') {
bundlerVersion = await common.measure('Installing Bundler', async () =>
bundler.installBundler(inputs['bundler'], lockFile, platform, rubyPrefix, engine, version))
bundler.installBundler(inputs['bundler'], rubygemsInputSet, lockFile, platform, rubyPrefix, engine, version))
}
if (inputs['bundler-cache'] === 'true') {