Ruby

Ruby 支援可透過 Ruby extension 取得。

Ruby extension 也提供對 ERB 檔案的支援。

選擇語言伺服器

Ruby extension 提供 solargraphruby-lsp 語言伺服器支援。

solargraph 預設為啟用狀態。

要切換至 ruby-lsp,請將以下內容新增至您的 settings.json

{
  "languages": {
    "Ruby": {
      "language_servers": ["ruby-lsp", "!solargraph", "!rubocop", "..."]
    }
  }
}

Ruby extension 也提供 rubocop 語言伺服器支援,用於偵測和自動修正錯誤。要啟用它,請將以下內容新增至您的 settings.json

{
  "languages": {
    "Ruby": {
      "language_servers": ["rubocop", "ruby-lsp", "!solargraph", "..."]
    }
  }
}

設定 solargraph

Zed 目前不會自動安裝 Solargraph。要使用 Solargraph,您需要安裝該 gem。Zed 只會在您的 PATH 上尋找名為 solargraph 的可執行檔。

您可以使用以下指令手動安裝 gem

gem install solargraph

或者,如果您的專案使用 Bundler,您可以將 Solargraph gem 新增至您的 Gemfile

gem 'solargraph', group: :development

Solargraph 預設會停用格式化和診斷功能。我們可以透過將以下內容新增至您的 settings.json 來告訴 Zed 啟用它們

{
  "lsp": {
    "solargraph": {
      "initialization_options": {
        "diagnostics": true,
        "formatting": true
      }
    }
  }
}

設定

Solargraph 會從專案根目錄中名為 .solargraph.yml 的檔案讀取其設定。如需此檔案的詳細資訊,請參閱 Solargraph 設定文件

設定 ruby-lsp

Zed 目前不會自動安裝 Ruby LSP。要使用 Ruby LSP,您需要安裝該 gem。Zed 只會在您的 PATH 上尋找名為 ruby-lsp 的可執行檔。

您可以使用以下指令手動安裝 gem

gem install ruby-lsp

Ruby LSP 使用 Zed 尚不支援的基於提取的診斷功能。我們可以透過將以下內容新增至您的 settings.json 來告訴 Zed 停用它

{
  "lsp": {
    "ruby-lsp": {
      "initialization_options": {
        "enabledFeatures": {
          "diagnostics": false
        }
      }
    }
  }
}

設定 rubocop LSP

Zed 目前不會自動安裝 rubocop。要使用 rubocop,您需要安裝該 gem。Zed 只會在您的 PATH 上尋找名為 rubocop 的可執行檔。

您可以使用以下指令手動安裝 gem

gem install rubocop

Rubocop 預設會停用不安全的自動修正功能。我們可以透過將以下內容新增至您的 settings.json 來告訴 Zed 啟用它

{
  "lsp": {
    "rubocop": {
      "initialization_options": {
        "safeAutocorrect": false
      }
    }
  }
}

在 Ruby 中使用 Tailwind CSS 語言伺服器

可以在 Ruby 和 ERB 檔案中使用 Tailwind CSS 語言伺服器

為此,您需要設定語言伺服器,讓它知道在哪裡尋找 Ruby/ERB 檔案中的 CSS 類別,方法是將以下內容新增至您的 settings.json

{
  "languages": {
    "Ruby": {
      "language_servers": ["tailwindcss-language-server", "..."]
    }
  },
  "lsp": {
    "tailwindcss-language-server": {
      "settings": {
        "includeLanguages": {
          "erb": "html",
          "ruby": "html"
        },
        "experimental": {
          "classRegex": ["\\bclass:\\s*['\"]([^'\"]*)['\"]"]
        }
      }
    }
  }
}

透過這些設定,您將在 ERB 檔案內的 HTML 屬性和 class: 鍵之後的 Ruby/ERB 字串中取得 Tailwind CSS 類別的自動完成功能。範例

# Ruby file:
def method
  div(class: "pl-2 <completion here>") do
    p(class: "mt-2 <completion here>") { "Hello World" }
  end
end

# ERB file:
<%= link_to "Hello", "/hello", class: "pl-2 <completion here>" %>
<a href="/hello" class="pl-2 <completion here>">Hello</a>