{"record":{"id":"a8ea0c1f55a92d29","repo":"jdx/mise","slug":"no-precompiled-ruby-is-available-for-this-platform","errorCode":null,"errorMessage":"no precompiled ruby is available for this platform\nTo compile ruby from source, run: mise settings ruby.compile=true","messagePattern":"no precompiled ruby is available for this platform\nTo compile ruby from source, run: mise settings ruby\\.compile=true","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/core/ruby.rs","lineNumber":648,"sourceCode":"        )))\n    }\n\n    /// Restrict a version list to versions that have a precompiled binary for this platform.\n    ///\n    /// Entries are only removed, never reordered, so `latest` and prefix resolution keep the\n    /// same ordering semantics as a source install.\n    async fn retain_precompiled_versions(\n        &self,\n        versions: Vec<VersionInfo>,\n    ) -> Result<Vec<VersionInfo>> {\n        let settings = Settings::get();\n        let source = &settings.ruby.precompiled_url;\n        if source.contains(\"://\") {\n            // A URL template can't be enumerated, so every version is assumed available.\n            return Ok(versions);\n        }\n        let Some(platform) = self.precompiled_platform() else {\n            bail!(\n                \"no precompiled ruby is available for this platform\\n\\\n                 To compile ruby from source, run: mise settings ruby.compile=true\"\n            );\n        };\n        // Only the releases `list_releases` returns are considered. Without\n        // MISE_LIST_ALL_VERSIONS that is the most recent page, which is where the\n        // precompiled builds live.\n        let releases = github::list_releases(source).await?;\n        let available = Self::precompiled_versions_from_releases(\n            &releases,\n            Self::source_requires_build_revision(source),\n            &platform,\n        );\n        Ok(versions\n            .into_iter()\n            .filter(|v| available.contains(&v.version))\n            .collect())\n    }","sourceCodeStart":630,"sourceCodeEnd":666,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/plugins/core/ruby.rs#L630-L666","documentation":"mise's ruby core plugin filters its remote version list (jdx/ruby GitHub releases) down to versions that ship precompiled binaries whenever `ruby.compile = false` (precompiled-only mode). retain_precompiled_versions first maps the host to a platform identifier via precompiled_platform(); only `macos` (arm64), `arm64_linux`, and `x86_64_linux` exist (unless ruby.precompiled-arch/os overrides are set). On any other OS/arch the platform is None and listing aborts with this error instead of silently offering versions that can never install without compiling.","triggerScenarios":"Settings contain `ruby.compile = false` and the host is x86_64 macOS, an exotic Linux arch (e.g. armv7, riscv64, s390x), or a non-macOS/non-Linux unix. Any remote version enumeration then hits it: `mise ls-remote ruby`, `mise use ruby@latest`, `mise install ruby` resolving a fuzzy version.","commonSituations":"Intel Mac users who opted out of source compilation; CI on niche architectures or containers emulated with QEMU; users who copied a dotfiles mise.toml with ruby.compile=false onto an unsupported machine; overrides like ruby.precompiled-os set to a value the jdx/ruby release assets don't cover.","solutions":["Set `mise settings ruby.compile=true` (or delete the ruby.compile=false setting) so listing includes source-buildable versions and installs fall back to ruby-build","If you must stay precompiled-only, add explicit overrides, e.g. `mise settings ruby.precompiled_arch=x86_64` and `ruby.precompiled_os=linux`, matching an asset platform that actually exists in jdx/ruby releases","On an Intel Mac or exotic-arch Linux, accept that no precompiled ruby exists: compile from source or run under Rosetta/a supported environment (e.g. arm64/x86_64 Linux container)","Pin an already-installed local version (`mise use ruby@3.3.6` with the version already in ~/.local/share/mise/installs) so no remote listing is needed"],"exampleFix":"# before\nmise settings ruby.compile=false\nmise use ruby@latest   # -> no precompiled ruby is available for this platform\n\n# after\nmise settings ruby.compile=true\nmise use ruby@latest","handlingStrategy":"validation","validationCode":"# before enabling precompiled-only ruby, confirm this platform has precompiled builds:\nuname -s   # must be Darwin (arm64) or Linux\nuname -m   # must be arm64/aarch64 or x86_64\n# or let mise tell you directly — this lists only versions with binaries:\nmise ls-remote ruby >/dev/null || mise settings ruby.compile=true","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Don't set ruby.compile=false in shared/global config; scope it per-machine or per supported platform","On Intel Macs or exotic-arch Linux, leave ruby.compile unset so source builds remain the fallback","Set ruby.precompiled_arch/ruby.precompiled_os explicitly when you depend on precompiled assets, so platform detection changes can't surprise you"],"tags":["ruby","precompiled","platform-support","mise-settings","version-listing"],"backgroundTag":"unsupported-platform-arch","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}