jdx/mise · error
no precompiled ruby is available for this platform
Error message
no precompiled ruby is available for this platform
What it means
Same install path as the sibling error, but this variant fires when precompiled_platform() returns None — the current platform has no precompiled ruby support at all, so no version/platform pair can be named. Compilation from source is the only remaining option and it is not enabled.
Solutions
- Enable source compilation: `mise settings set ruby.compile true`
- Switch to a supported OS/arch environment (standard glibc linux or macOS) for precompiled installs
- Use a plugin that supports your platform (e.g. vfox ruby) if source compilation is impossible
Example fix
// before mise use ruby@3.3.6 // on unsupported platform, compile unset // after mise settings set ruby.compile true mise use ruby@3.3.6
Defensive patterns
Strategy: fallback
Validate before calling
// detect unsupported platforms before invoking core ruby
const PRECOMPILED_PLATFORMS = ["x86_64-apple-darwin","aarch64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu"];
if (!PRECOMPILED_PLATFORMS.includes(platform) && !compileEnabled) {
await $`mise settings set ruby.compile true`;
} Try / catch
try {
await $`mise install ruby@${ver}`;
} catch (e) {
if (String(e).includes("no precompiled ruby is available for this platform")) {
await $`mise settings set ruby.compile true`;
await $`mise install ruby@${ver}`;
} else throw e;
} Prevention
- On musl/alpine/BSD hosts always enable ruby.compile up front
- Prefer a plugin (vfox ruby) on platforms core ruby cannot precompile for
- Document platform constraints in project mise.toml comments so CI picks compile settings accordingly
When it happens
Trigger: `mise install ruby@<version>` on a platform with no precompiled_platform() mapping (unsupported OS/arch or musl-style environment), while ruby.compile is not enabled.
Common situations: Alpine/musl or BSD environments; unusual architectures (riscv64); trying the core ruby plugin where only source builds can work.
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
- no precompiled ruby is available for this platform To…
- cannot install # : does not exist
- No lockfile URL found for
- no precompiled ruby found for
- no precompiled ruby is available for this platform\nTo…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/d2c6178f0baf7d16.
Report an issue: GitHub.
Appendix: source
Thrown at src/plugins/core/ruby.rs:1097
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
.install_default_gems(&ctx.config, &tv, ctx.pr.as_ref())View on GitHub (pinned to 533346cc37)