jdx/mise · error

no precompiled ruby found for {tv} on {platform}

Error message

no precompiled ruby found for {tv} on {platform}

What it means

During core:ruby installation, mise first tries to select a precompiled build; if none matches the requested version/platform but a platform mapping exists, it fails naming the version and platform, with a hint to compile from source (ruby.compile=true).

Source

Thrown at src/plugins/core/ruby.rs:1078

                self.install_rubygems_hook(&installed_tv)?;
                if let Err(err) = self
                    .install_default_gems(&ctx.config, &installed_tv, ctx.pr.as_ref())
                    .await
                {
                    warn!("failed to install default ruby gems {err:#}");
                }
                return Ok(installed_tv);
            }
            // `ruby.compile = false` opts out of source builds entirely, so a missing
            // precompiled binary is an error instead of a silent ruby-build fallback.
            if self.precompiled_only() {
                hint!(
                    "ruby_compile",
                    "To compile ruby from source, run",
                    "mise settings ruby.compile=true"
                );
                match self.precompiled_platform() {
                    Some(platform) => bail!("no precompiled ruby found for {tv} on {platform}"),
                    None => bail!("no precompiled ruby is available for this platform"),
                }
            }
        }
        // No precompiled available, fall through to compile from source

        // Compile from source
        let _ = Settings::get().ruby_compile(CompilePurpose::Install);
        if let Err(err) = self.update_build_tool(Some(ctx)).await {
            warn!("ruby build tool update error: {err:#}");
        }
        ctx.pr.set_message("ruby-build".into());
        self.install_cmd(&ctx.config, &tv, ctx.pr.as_ref())
            .await?
            .execute()?;

        self.install_rubygems_hook(&tv)?;
        if let Err(err) = self

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Enable compilation: `mise settings ruby.compile=true`
  2. Pick a ruby version that exists in the precompiled releases
  3. Set a custom ruby.precompiled_url that hosts the needed build

Example fix

// before
mise install ruby@3.4.0  // no prebuilt for this platform yet

// after
mise settings set ruby.compile true
mise install ruby@3.4.0
Defensive patterns

Strategy: fallback

Validate before calling

curl -fsSL "https://github.com/MISE-Hosting/ruby-builds/releases" | grep -q "ruby-3.3.0-$(uname -m)" || echo 'no prebuilt; enable ruby.compile'

Try / catch

if ! mise install ruby@"$VER"; then
  mise settings set ruby.compile true
  mise install ruby@"$VER"
fi

Prevention

When it happens

Trigger: `mise install ruby@<version>` where the precompiled release list has no build for that version on your (supported) platform, and ruby.compile is disabled; raised directly in install_version_.

Common situations: Requesting a very old or brand-new ruby version absent from prebuilt releases; platform supported but that specific version's artifact missing.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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