diff --git a/src/components/QuickStartFilter.js b/src/components/QuickStartFilter.js
index 8e86dfe54..51fcb9e5c 100644
--- a/src/components/QuickStartFilter.js
+++ b/src/components/QuickStartFilter.js
@@ -2,20 +2,65 @@ import React, {useState} from "react";
import quickstarts from "./QuickStartList";
import Link from "@docusaurus/Link";
import {FaGolang} from "react-icons/fa6";
-import {FaJava, FaLaptopCode, FaDocker, FaPython, FaCheck, FaArrowRight, FaArrowLeft} from "react-icons/fa";
+import {
+ FaJava,
+ FaLaptopCode,
+ FaDocker,
+ FaPython,
+ FaCheck,
+ FaArrowRight,
+ FaArrowLeft,
+ FaGem,
+} from "react-icons/fa";
import {TbBrandCSharp} from "react-icons/tb";
import {IoLogoJavascript} from "react-icons/io5";
import {useColorMode} from "@docusaurus/theme-common";
+import {useLocation} from "@docusaurus/router";
+
+function isVersionAtLeast(version, minimumVersion) {
+ const versionParts = version.split(".").map(Number);
+ const minimumParts = minimumVersion.split(".").map(Number);
+
+ if (
+ versionParts.length !== 3 ||
+ minimumParts.length !== 3 ||
+ versionParts.some(Number.isNaN) ||
+ minimumParts.some(Number.isNaN)
+ ) {
+ return false;
+ }
+
+ for (let index = 0; index < 3; index++) {
+ if (versionParts[index] > minimumParts[index]) {
+ return true;
+ }
+
+ if (versionParts[index] < minimumParts[index]) {
+ return false;
+ }
+ }
+
+ return true;
+}
export default function QuickstartFilter({defaultLanguage = null}) {
const {colorMode} = useColorMode();
+ const {pathname} = useLocation();
const isDark = colorMode === "dark";
+ const versionMatch = pathname.match(/\/docs\/(\d+\.\d+\.\d+)\//);
+ const supportsRubyQuickstarts =
+ !versionMatch || isVersionAtLeast(versionMatch[1], "4.0.0");
+
const [currentStep, setCurrentStep] = useState(defaultLanguage ? 2 : 1);
const [language, setLanguage] = useState(defaultLanguage);
const [server, setServer] = useState(null);
const filteredQuickstarts = quickstarts.filter((app) => {
+ if (app.language === "Ruby" && !supportsRubyQuickstarts) {
+ return false;
+ }
+
return (
(!language || app.language === language) &&
(!server || app.server === server)
@@ -30,14 +75,39 @@ export default function QuickstartFilter({defaultLanguage = null}) {
{name: "C#", icon: