Ruby

可以通过 Ruby 扩展 获得 Ruby 支持。

Ruby 扩展还提供对 ERB 文件的支持。

选择语言服务器

Ruby 扩展同时提供 solargraphruby-lsp 语言服务器支持。

solargraph 默认启用。

要切换到 ruby-lsp,请将以下内容添加到 settings.json

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

Ruby 扩展还提供对 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
      }
    }
  }
}

使用 Tailwind CSS 语言服务器和 Ruby

可以在 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 属性中的 Tailwind CSS 类和在 class: 键之后出现的 Ruby/ERB 字符串中的自动完成。示例

# 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>