Compare commits

..
16 Commits
Author SHA1 Message Date
ruby-builder-bot e404913b05 Add ruby-3.2.0-preview1 2022-05-01 12:44:33 +02:00
ruby-builder-bot eb938a806e Add truffleruby-22.1.0 2022-04-26 16:44:11 +02:00
Benoit Daloze ee5764de2c Give more details on why the shipped Bundler is used in some cases 2022-04-22 17:06:58 +02:00
ruby-builder-bot 2b019609e2 Update CRuby releases on Windows 2022-04-20 21:33:41 +02:00
David Rodríguez 7e21bdc34c Reword mention to JRuby bug to make it clear that it's now fixed 2022-04-20 14:46:14 +02:00
Soumya Ranjan Mahunt b37f0a38ea add libgmp to requirements for self-hosted runners 2022-04-17 11:53:10 +02:00
ruby-builder-bot ebaea52cb2 Add ruby-3.1.2 2022-04-12 16:48:40 +02:00
ruby-builder-bot 382b2c5e9b Add ruby-3.0.4 2022-04-12 16:42:46 +02:00
ruby-builder-bot 0d85c5bbb7 Add ruby-2.6.10 2022-04-12 16:41:27 +02:00
ruby-builder-bot b80945c764 Add ruby-2.7.6 2022-04-12 16:32:06 +02:00
Jason Frey 1a68550f2e Fix bundler: with a minor version installing the wrong version
If passed `bundler: 2.2`, setup-ruby would install bundler 2.3, because
it would generate a constraint that looks like `~> 2.2`. This
unexpectedly installs the latest of the 2.x series, but the expectation
is that it would install the latest of the 2.2.x series.

Fixes #304
2022-04-05 18:04:27 +02:00
ruby-builder-bot bd94d6a504 Add jruby-9.3.4.0 2022-03-23 21:16:51 +01:00
Cliffano Subagio b9d02e5f7e Remove ubuntu-16.04 from the list of supported Ubuntu versions. 2022-03-14 10:07:50 +01:00
Benoit Daloze 4d8ce7b87d ruby-head now sets a proper ABI version
https://bugs.ruby-lang.org/issues/18249
2022-03-03 14:59:41 +01:00
Benoit Daloze cd9d3de43b Show stacktrace if available, in addition to error message 2022-02-27 17:51:33 +01:00
Benoit Daloze 7baabd2c5d Make new-version.rb windows delegate to generate-windows-versions.rb 2022-02-20 12:27:42 +01:00
10 changed files with 81 additions and 36 deletions
+22
View File
@@ -145,6 +145,28 @@ jobs:
rubygems: 3.2.3 rubygems: 3.2.3
- run: gem --version | grep -F "3.3.3" - run: gem --version | grep -F "3.3.3"
testMajorBundlerVersion:
name: "Test with a major Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 2.6
bundler: 2
- run: bundle --version | grep -P "Bundler version 2\.\d+\.\d+"
testMinorBundlerVersion:
name: "Test with a minor Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./
with:
ruby-version: 2.6
bundler: 2.2
- run: bundle --version | grep -P "Bundler version 2\.2\.\d+"
testExactBundlerVersion: testExactBundlerVersion:
name: "Test with an exact Bundler version" name: "Test with an exact Bundler version"
runs-on: ubuntu-latest runs-on: ubuntu-latest
+7 -7
View File
@@ -14,10 +14,10 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
| Interpreter | Versions | | Interpreter | Versions |
| ----------- | -------- | | ----------- | -------- |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.1.1, head, debug, mingw, mswin | | `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.2.0-preview1, head, debug, mingw, mswin |
| `jruby` | 9.1.17.0 - 9.3.3.0, head | | `jruby` | 9.1.17.0 - 9.3.4.0, head |
| `truffleruby` | 19.3.0 - 22.0.0, head | | `truffleruby` | 19.3.0 - 22.1.0, head |
| `truffleruby+graalvm` | 21.2.0 - 22.0.0, head | | `truffleruby+graalvm` | 21.2.0 - 22.1.0, head |
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`). `ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
On Windows, `mingw` and `mswin` are `ruby-head` builds using the MSYS2/MinGW and the MSVC toolchains respectively. On Windows, `mingw` and `mswin` are `ruby-head` builds using the MSYS2/MinGW and the MSVC toolchains respectively.
@@ -39,7 +39,7 @@ The action works for all [GitHub-hosted runners](https://help.github.com/en/acti
| Operating System | Recommended | Other Supported Versions | | Operating System | Recommended | Other Supported Versions |
| ----------- | -------- | -------- | | ----------- | -------- | -------- |
| Ubuntu | `ubuntu-latest` (= `ubuntu-20.04`) | `ubuntu-18.04`, `ubuntu-16.04` | | Ubuntu | `ubuntu-latest` (= `ubuntu-20.04`) | `ubuntu-18.04` |
| macOS | `macos-latest` (= `macos-10.15`) | `macos-11.0` | | macOS | `macos-latest` (= `macos-10.15`) | `macos-11.0` |
| Windows | `windows-latest` (= `windows-2019`) | `windows-2022` | | Windows | `windows-latest` (= `windows-2019`) | `windows-2022` |
@@ -225,7 +225,7 @@ It is recommended to first get your build working on Ubuntu and macOS before try
* The `PATH` contains [multiple compiler toolchains](https://github.com/ruby/setup-ruby/issues/19). Use `where.exe` to debug which tool is used. * The `PATH` contains [multiple compiler toolchains](https://github.com/ruby/setup-ruby/issues/19). Use `where.exe` to debug which tool is used.
* For Ruby ≥ 2.4, MSYS2 is prepended to the `Path`, similar to what RubyInstaller2 does. * For Ruby ≥ 2.4, MSYS2 is prepended to the `Path`, similar to what RubyInstaller2 does.
* For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`. * For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`.
* JRuby on Windows has a known bug that `bundle exec rake` [fails](https://github.com/ruby/setup-ruby/issues/18). * Use JRuby 9.2.20+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/18#issuecomment-889072695)).
## Versioning ## Versioning
@@ -247,7 +247,7 @@ if the [virtual environment](https://github.com/actions/virtual-environments) is
* Make sure to use the same operating system and version. * Make sure to use the same operating system and version.
* Set the environment variable `ImageOS` on the runner to the corresponding value on GitHub-hosted runners (e.g. `ubuntu18`/`macos1015`/`win19`). This is necessary to detect the operating system and version. * Set the environment variable `ImageOS` on the runner to the corresponding value on GitHub-hosted runners (e.g. `ubuntu18`/`macos1015`/`win19`). This is necessary to detect the operating system and version.
* Make sure to use the same version of libssl. * Make sure to use the same version of libssl.
* Make sure that the operating system has `libyaml-0` installed * Make sure that the operating system has `libyaml-0` and [`libgmp`](https://stackoverflow.com/questions/26555902/ruby-v-dyld-library-not-loaded-usr-local-lib-libgmp-10-dylib) installed
* The default tool cache directory (`/opt/hostedtoolcache` on Linux, `/Users/runner/hostedtoolcache` on macOS, * The default tool cache directory (`/opt/hostedtoolcache` on Linux, `/Users/runner/hostedtoolcache` on macOS,
`C:/hostedtoolcache/windows` on Windows) must be writable by the `runner` user. `C:/hostedtoolcache/windows` on Windows) must be writable by the `runner` user.
This is necessary since the Ruby builds embed the install path when built and cannot be moved around. This is necessary since the Ruby builds embed the install path when built and cannot be moved around.
+1 -1
View File
@@ -18,7 +18,7 @@ inputs:
Defaults to 'default'. Defaults to 'default'.
bundler: bundler:
description: | description: |
The version of Bundler to install. Either 'none', 'latest', 'Gemfile.lock', or a version number (e.g., 1, 2, 2.1.4). The version of Bundler to install. Either 'none', 'latest', 'Gemfile.lock', or a version number (e.g., 1, 2, 2.1, 2.1.4).
For 'Gemfile.lock', the version is determined based on the BUNDLED WITH section from the file Gemfile.lock, $BUNDLE_GEMFILE.lock or gems.locked. For 'Gemfile.lock', the version is determined based on the BUNDLED WITH section from the file Gemfile.lock, $BUNDLE_GEMFILE.lock or gems.locked.
Defaults to 'Gemfile.lock' if the file exists and 'latest' otherwise. Defaults to 'Gemfile.lock' if the file exists and 'latest' otherwise.
required: false required: false
+15 -8
View File
@@ -65,8 +65,8 @@ export async function installBundler(bundlerVersionInput, lockFile, platform, ru
bundlerVersion = '2' bundlerVersion = '2'
} }
if (/^\d+/.test(bundlerVersion)) { if (/^\d+(?:\.\d+){0,2}$/.test(bundlerVersion)) {
// OK // OK - input is a 1, 2, or 3 part version number
} else { } else {
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`) throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
} }
@@ -85,19 +85,27 @@ export async function installBundler(bundlerVersionInput, lockFile, platform, ru
} }
// Workaround for truffleruby 22.0 + latest Bundler, use shipped Bundler instead: https://github.com/oracle/truffleruby/issues/2586 // Workaround for truffleruby 22.0 + latest Bundler, use shipped Bundler instead: https://github.com/oracle/truffleruby/issues/2586
const useShippedBundler2 = common.isHeadVersion(rubyVersion) || (engine.startsWith('truffleruby') && rubyVersion.startsWith('22.0')) const truffleruby22workaround = engine.startsWith('truffleruby') && rubyVersion.startsWith('22.0')
const useShippedBundler2 = common.isHeadVersion(rubyVersion) || truffleruby22workaround
if (useShippedBundler2 && common.isBundler2Default(engine, rubyVersion) && bundlerVersion.startsWith('2')) { if (useShippedBundler2 && common.isBundler2Default(engine, rubyVersion) && bundlerVersion.startsWith('2')) {
// Avoid installing a newer Bundler version for head versions as it might not work. // Avoid installing a newer Bundler version for head versions as it might not work.
// For releases, even if they ship with Bundler 2 we install the latest Bundler. // For releases, even if they ship with Bundler 2 we install the latest Bundler.
console.log(`Using Bundler 2 shipped with ${engine}-${rubyVersion}`) if (truffleruby22workaround) {
console.log(`Using Bundler 2 shipped with ${engine}-${rubyVersion} (workaround for https://github.com/oracle/truffleruby/issues/2586 on truffleruby 22.0)`)
} else {
console.log(`Using Bundler 2 shipped with ${engine}-${rubyVersion} (head versions do not always support the latest Bundler release)`)
}
} else if (engine.startsWith('truffleruby') && common.isBundler1Default(engine, rubyVersion) && bundlerVersion.startsWith('1')) { } else if (engine.startsWith('truffleruby') && common.isBundler1Default(engine, rubyVersion) && bundlerVersion.startsWith('1')) {
console.log(`Using Bundler 1 shipped with ${engine}-${rubyVersion}`) console.log(`Using Bundler 1 shipped with ${engine}-${rubyVersion} (required for truffleruby < 21.0)`)
} else { } else {
const gem = path.join(rubyPrefix, 'bin', 'gem') const gem = path.join(rubyPrefix, 'bin', 'gem')
const bundlerVersionConstraint = /^\d+\.\d+\.\d+/.test(bundlerVersion) ? bundlerVersion : `~> ${bundlerVersion}`
// Workaround for https://github.com/rubygems/rubygems/issues/5245 // Workaround for https://github.com/rubygems/rubygems/issues/5245
const force = (platform.startsWith('windows-') && engine === 'ruby' && floatVersion >= 3.1) ? ['--force'] : [] const force = (platform.startsWith('windows-') && engine === 'ruby' && floatVersion >= 3.1) ? ['--force'] : []
const versionParts = [...bundlerVersion.matchAll(/\d+/g)].length
const bundlerVersionConstraint = versionParts === 3 ? bundlerVersion : `~> ${bundlerVersion}.0`
await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint]) await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint])
} }
@@ -192,8 +200,7 @@ async function computeBaseKey(platform, engine, version, lockFile, cacheVersion)
if (common.isHeadVersion(version)) { if (common.isHeadVersion(version)) {
if (engine !== 'jruby') { if (engine !== 'jruby') {
// CRuby dev versions do not change the ABI version when the ABI changes, so use the commit as the ABI version let print_abi = "print RbConfig::CONFIG['ruby_version']"
let print_abi = engine === 'ruby' ? 'print RUBY_REVISION' : "print RbConfig::CONFIG['ruby_version']"
let abi = '' let abi = ''
await exec.exec('ruby', ['-e', print_abi], { await exec.exec('ruby', ['-e', print_abi], {
silent: true, silent: true,
Generated Vendored
+18 -11
View File
File diff suppressed because one or more lines are too long
-1
View File
@@ -31,4 +31,3 @@ versions['mswin'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/rub
versions['ucrt'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z' versions['ucrt'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z'
File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n" File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
+1 -1
View File
@@ -23,7 +23,7 @@ export async function run() {
try { try {
await setupRuby() await setupRuby()
} catch (error) { } catch (error) {
core.setFailed(error.message) core.setFailed(error.stack)
} }
} }
+5
View File
@@ -1,5 +1,10 @@
engine_input, version = ARGV.fetch(0).split('-', 2) engine_input, version = ARGV.fetch(0).split('-', 2)
if engine_input == 'windows'
require_relative 'generate-windows-versions'
exit
end
MATCH = case engine_input MATCH = case engine_input
when 'ruby', 'jruby' when 'ruby', 'jruby'
/^\d+\.\d+\./ /^\d+\.\d+\./
+8 -7
View File
@@ -7,28 +7,29 @@
"2.3.0", "2.3.1", "2.3.2", "2.3.3", "2.3.4", "2.3.5", "2.3.6", "2.3.7", "2.3.8", "2.3.0", "2.3.1", "2.3.2", "2.3.3", "2.3.4", "2.3.5", "2.3.6", "2.3.7", "2.3.8",
"2.4.0", "2.4.1", "2.4.2", "2.4.3", "2.4.4", "2.4.5", "2.4.6", "2.4.7", "2.4.9", "2.4.10", "2.4.0", "2.4.1", "2.4.2", "2.4.3", "2.4.4", "2.4.5", "2.4.6", "2.4.7", "2.4.9", "2.4.10",
"2.5.0", "2.5.1", "2.5.2", "2.5.3", "2.5.4", "2.5.5", "2.5.6", "2.5.7", "2.5.8", "2.5.9", "2.5.0", "2.5.1", "2.5.2", "2.5.3", "2.5.4", "2.5.5", "2.5.6", "2.5.7", "2.5.8", "2.5.9",
"2.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5", "2.6.6", "2.6.7", "2.6.8", "2.6.9", "2.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5", "2.6.6", "2.6.7", "2.6.8", "2.6.9", "2.6.10",
"2.7.0", "2.7.1", "2.7.2", "2.7.3", "2.7.4", "2.7.5", "2.7.0", "2.7.1", "2.7.2", "2.7.3", "2.7.4", "2.7.5", "2.7.6",
"3.0.0-preview1", "3.0.0-preview2", "3.0.0-rc1", "3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.0.0-preview1", "3.0.0-preview2", "3.0.0-rc1", "3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4",
"3.1.0-preview1", "3.1.0", "3.1.1", "3.1.0-preview1", "3.1.0", "3.1.1", "3.1.2",
"3.2.0-preview1",
"head", "debug" "head", "debug"
], ],
"jruby": [ "jruby": [
"9.1.17.0", "9.1.17.0",
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0", "9.2.14.0", "9.2.15.0", "9.2.16.0", "9.2.17.0", "9.2.18.0", "9.2.19.0", "9.2.20.0", "9.2.20.1", "9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0", "9.2.14.0", "9.2.15.0", "9.2.16.0", "9.2.17.0", "9.2.18.0", "9.2.19.0", "9.2.20.0", "9.2.20.1",
"9.3.0.0", "9.3.1.0", "9.3.2.0", "9.3.3.0", "9.3.0.0", "9.3.1.0", "9.3.2.0", "9.3.3.0", "9.3.4.0",
"head" "head"
], ],
"truffleruby": [ "truffleruby": [
"19.3.0", "19.3.1", "19.3.0", "19.3.1",
"20.0.0", "20.1.0", "20.2.0", "20.3.0", "20.0.0", "20.1.0", "20.2.0", "20.3.0",
"21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0", "21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0",
"22.0.0.2", "22.0.0.2", "22.1.0",
"head" "head"
], ],
"truffleruby+graalvm": [ "truffleruby+graalvm": [
"21.2.0", "21.3.0", "21.2.0", "21.3.0",
"22.0.0.2", "22.0.0.2", "22.1.0",
"head" "head"
] ]
} }
+4
View File
@@ -32,18 +32,22 @@
"2.6.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z", "2.6.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z",
"2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z", "2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z",
"2.6.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z", "2.6.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z",
"2.6.10": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.10-1/rubyinstaller-2.6.10-1-x64.7z",
"2.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z", "2.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z",
"2.7.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z", "2.7.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z",
"2.7.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z", "2.7.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z",
"2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z", "2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z",
"2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z", "2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z",
"2.7.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z", "2.7.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z",
"2.7.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z",
"3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z", "3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z",
"3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z", "3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z",
"3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z", "3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z",
"3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z", "3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z",
"3.0.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z",
"3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z", "3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z",
"3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z", "3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z",
"3.1.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z",
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z", "head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z",
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z", "mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z",
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z", "mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z",