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 を使用している場合は、Gemfile に Solargraph gem を追加できます。

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 言語サーバーを使用する

Tailwind CSS 言語サーバー を Ruby と ERB ファイルで使用できます。

そのためには、settings.json に以下を追加して、言語サーバーが Ruby/ERB ファイルで CSS クラスを探す場所を認識できるように構成する必要があります。

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

これらの設定を使用すると、class: キーに続く ERB ファイル内の HTML 属性や 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>