jdx/mise · error

Ruby engine '{version}' is not supported on Windows.\nOnly s

Error message

Ruby engine '{version}' is not supported on Windows.\nOnly standard MRI Ruby versions can be installed via RubyInstaller2.

What it means

The Windows Ruby core plugin only supports installing standard MRI (CRuby) interpreters via RubyInstaller2. If the requested tool version string resolves to a non-MRI Ruby engine (e.g. jruby, truffleruby, rbx, or a ref/channel name that is not a plain MRI version), install_version_ aborts before attempting any download. This is a deliberate guard because RubyInstaller2 only ships MRI builds.

Source

Thrown at src/plugins/core/ruby_windows.rs:229

                body.trim()
                    .trim_start_matches("ruby-")
                    .trim_start_matches('v')
                    .to_string()
            }
        };
        if v.is_empty() {
            return Ok(vec![]);
        }
        Ok(vec![v])
    }

    async fn install_version_(
        &self,
        ctx: &InstallContext,
        mut tv: ToolVersion,
    ) -> eyre::Result<ToolVersion> {
        if !super::ruby_common::is_mri_version(&tv.version) {
            bail!(
                "Ruby engine '{}' is not supported on Windows.\n\
                 Only standard MRI Ruby versions can be installed via RubyInstaller2.",
                tv.version
            );
        }
        let tarball = self.download(&tv, ctx.pr.as_ref()).await?;
        self.verify_checksum(ctx, &mut tv, &tarball)?;
        self.install(ctx, &tv, &tarball).await?;
        self.verify(ctx, &tv).await?;
        self.install_rubygems_hook(&tv)?;
        self.test_gem(&ctx.config, &tv, ctx.pr.as_ref()).await?;
        if let Err(err) = self
            .install_default_gems(&ctx.config, &tv, ctx.pr.as_ref())
            .await
        {
            warn!("failed to install default ruby gems {err:#}");
        }
        Ok(tv)

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Change the requested version to a standard MRI version string (e.g. 3.3.1) in your .tool-versions or mise.toml.
  2. If you genuinely need JRuby/TruffleRuby on Windows, install it manually or via another package manager instead of mise's ruby plugin.
  3. Check that no environment-specific config (MISE_*) overrides ruby's version with a non-MRI engine name.

Example fix

// before (.tool-versions)
ruby jruby-9.4.5.0
// after (.tool-versions)
ruby 3.3.1
Defensive patterns

Strategy: validation

Validate before calling

if !version.split(['-', '/']).next().unwrap_or("").chars().next().map_or(false, |c| c.is_ascii_digit()) {
    eprintln!("ruby engine '{version}' is not installable on Windows; use a standard MRI version like 3.3.1");
}

Prevention

When it happens

Trigger: Running `mise install ruby@<version>` (or having ruby in a .tool-versions/mise.toml) on Windows where ruby_common::is_mri_version(&tv.version) returns false — e.g. ruby@jruby-9.4, ruby@truffleruby-23.1, ruby@ref:master, or other non-standard version strings.

Common situations: Users migrating a project config from macOS/Linux to Windows that pins a non-MRI engine; copying a team .tool-versions that uses jruby or truffleruby; typos in the version string that fail MRI version parsing.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/f52aedfe9e64a7cd. Report an issue: GitHub.