jdx/mise · error
no precompiled ruby is available for this platform To…
Error message
no precompiled ruby is available for this platform To compile ruby from source, run: mise settings ruby.compile=true
What it means
When listing available ruby versions, the core ruby plugin filters to precompiled builds; precompiled_platform() returns None for platforms ruby-build's precompiled releases do not cover, and _list_remote_versions bails instead of returning an empty list. The message includes the hint to enable ruby.compile so the version list/install can fall back to source builds.
Solutions
- Enable source compilation: `mise settings set ruby.compile true`
- Install an OS/arch combination with precompiled ruby releases (standard gnu linux or macOS)
- Point ruby.precompiled_url at a custom release source that hosts builds for your platform
Example fix
// before mise ls-remote ruby // on unsupported platform // after mise settings set ruby.compile true mise ls-remote ruby
Defensive patterns
Strategy: fallback
Validate before calling
// skip precompiled ruby listings on platforms ruby-build does not host
const SUPPORTED = /^(x86_64|aarch64)-(apple-darwin|unknown-linux-gnu)$/;
if (!SUPPORTED.test(platform)) {
await $`mise settings set ruby.compile true`;
} Try / catch
try {
const versions = await $`mise ls-remote ruby`;
} catch (e) {
if (String(e).includes("no precompiled ruby is available")) {
await $`mise settings set ruby.compile true`;
} else throw e;
} Prevention
- Set ruby.compile=true proactively on non-standard platforms (musl, BSD)
- Check ruby-build's hosted precompiled platforms before adopting core ruby
- Keep mise updated so newly added precompiled platforms are recognized
When it happens
Trigger: Running `mise ls-remote ruby` (or any install that calls _list_remote_versions) on a platform for which self.precompiled_platform() has no mapping, while the ruby.precompiled_url setting is not a custom URL template.
Common situations: Exotic OS/arch combos (e.g. musl/alpine, freebsd) with no precompiled ruby hosted; a typo'd or unsupported platform override in ruby settings.
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
- 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/a8ea0c1f55a92d29.
Report an issue: GitHub.
Appendix: source
Thrown at src/plugins/core/ruby.rs:626
)))
}
/// Restrict a version list to versions that have a precompiled binary for this platform.
///
/// Entries are only removed, never reordered, so `latest` and prefix resolution keep the
/// same ordering semantics as a source install.
async fn retain_precompiled_versions(
&self,
versions: Vec<VersionInfo>,
) -> Result<Vec<VersionInfo>> {
let settings = Settings::get();
let source = &settings.ruby.precompiled_url;
if source.contains("://") {
// A URL template can't be enumerated, so every version is assumed available.
return Ok(versions);
}
let Some(platform) = self.precompiled_platform() else {
bail!(
"no precompiled ruby is available for this platform\n\
To compile ruby from source, run: mise settings ruby.compile=true"
);
};
// Only the releases `list_releases` returns are considered. Without
// MISE_LIST_ALL_VERSIONS that is the most recent page, which is where the
// precompiled builds live.
let releases = github::list_releases(source).await?;
let available = Self::precompiled_versions_from_releases(
&releases,
Self::source_requires_build_revision(source),
&platform,
);
Ok(versions
.into_iter()
.filter(|v| available.contains(&v.version))
.collect())
}View on GitHub (pinned to 533346cc37)