VS Codeのエージェントモードを拡張するには、を試してください!

Visual Studio Code での Ruby

Ruby は、そのシンプルさと生産性で知られる動的なオープンソースプログラミング言語です。表現力豊かでエレガントな構文を持ち、Ruby の哲学の一部は開発者を幸せにすることです。Web 開発にさまざまなフレームワークで使用されることが多く、プロトタイプ構築時に高速なイテレーションを可能にするスクリプト作成にも使用されます。

このトピックでは、Ruby LSP 拡張機能を使用して Visual Studio Code 内で Ruby をセットアップして使用する方法について詳しく説明します。

Ruby extension banner

インストール

バージョンマネージャー経由で Ruby をインストールする

Ruby は一部のオペレーティングシステム (macOS や一部の Linux ディストリビューションなど) にデフォルトでインストールされていますが、macOS および Linux では rbenv、Windows では rbenv on Windows など、新しいバージョンの Ruby にアクセスするにはバージョンマネージャーを使用することをお勧めします。お使いのプラットフォームのインストールガイドに従ってください。

: 新しいツールセットをマシンにインストールする場合と同様に、ターミナル/コマンドプロンプトおよび VS Code インスタンスを再起動して、プラットフォームの PATH 変数で更新されたツールセットの場所を使用するようにしてください。

VS Code に Ruby LSP 拡張機能をインストールする

Ruby LSP 拡張機能は、VS Code 内の拡張機能ビュー (⇧⌘X (Windows, Linux Ctrl+Shift+X)) から「Ruby LSP」を検索して見つけ、インストールできます。

Ruby LSP extension in the Extensions view

このトピックでは Ruby LSP の多くの機能について説明しますが、拡張機能のドキュメントリポジトリも参照できます。

インストールを確認する

インストール後、ステータスバーの言語ステータス項目をチェックして、Ruby LSP サーバーのステータスを確認します。バージョンマネージャーが構成されている場合、プロジェクトの適切な Ruby バージョンが表示されるはずです。サーバーのステータスは「開始中」または「実行中」と表示され、エラーではないはずです。

Ruby LSP language status center

この拡張機能は、言語サーバー gem ruby-lsp を含むカスタムバンドルを持つ .ruby-lsp フォルダーを自動的に生成します。設定は不要です。

デフォルトでは、拡張機能は使用している Ruby バージョンマネージャーを自動的に検出し、それに応じて適切なバージョンとパスを使用しようとします。この動作をカスタマイズしたい場合は、ユーザー設定に次の構成を設定します。

{
  "rubyLsp.rubyVersionManager": {
    "identifier": "rbenv"
  }
}

拡張機能は ruby-lsp 言語サーバー gem を定期的に自動的に更新しようとします。強制的に更新したい場合は、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を使用して Ruby LSP: Update language server gem を実行します。

問題が発生した場合は、次の手順についてはトラブルシューティングを参照してください。

主な機能

ナビゲーションと IntelliSense

Ruby LSP は、定義への移動、ホバー、ワークスペースシンボル、ドキュメントシンボル、補完、署名ヘルプなど、いくつかのナビゲーションおよび IntelliSense 関連機能を提供します。

VS Code でソースコード内をすばやく移動する方法について詳しくは、コードナビゲーションをご覧ください。

インレイヒント

Ruby LSP は、コード内の推論された値や暗黙的な値に関する有用な情報を表示できます。以下の例では、空の rescue 呼び出しで捕捉される暗黙的な例外クラスとして StandardError が表示されているのがわかります。

Ruby program with inlay hints displayed

インレイヒントはコードを理解するのに役立ちますが、エディター > インレイヒント: 有効設定 (editor.inlayHints.enabled) からこの機能を無効にすることも、以下の設定を使用して Ruby LSP に対してのみこの機能を無効にすることもできます。

"rubyLsp.enabledFeatures": {
    "inlayHint": false,
}

セマンティックシンタックスハイライト

Ruby LSP は、プロジェクトのソースコードを深く理解しているため、セマンティック構文強調表示とスタイル設定を使用できます。

たとえば、次を強調表示できます。

  • ローカル変数と混同することなく、メソッド呼び出しを一貫して強調表示します。
  • ローカル引数 (メソッド、ブロック、ラムダ引数など) を、それらが存在するスコープ内で一貫して強調表示します。

Ruby LSP semantic highlighting

: このスクリーンショットは、Ruby 拡張機能パックに含まれる Spinel テーマを使用しています。テーマは、Ruby ファイルに豊富な強調表示を提供するために、Ruby LSP によって公開される情報を使用する必要があります。

この機能を使用するには、エディターでセマンティック強調表示が有効になっている必要があります。

"editor.semanticHighlighting.enabled": true,

リントとフォーマット

デフォルトでは、Ruby LSP は RuboCop との統合を通じてリントとフォーマットを提供します。Ruby ファイルは ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) を使用するか、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) またはエディターのコンテキストメニューから Format Document コマンドを実行してフォーマットできます。

プロジェクトで RuboCop を使用していない場合、Ruby LSP は SyntaxTree を使用してファイルをフォーマットします。

Linting a Ruby file

作業中に Ruby コードを自動的に適切にフォーマットするために、保存ごとにフォーマッターを実行する (エディター: 保存時にフォーマット) こともできます。これを行うには、保存時にフォーマットを有効にする必要があります。

"editor.formatOnSave": true

Ruby LSP 拡張機能は、入力時のフォーマットを使用して便利な補完も提供します。たとえば、コメント行の自動継続、end トークン、パイプ、または文字列補間の中括弧の自動閉じを行います。入力時のフォーマットを使用するには、エディターで次を有効にしていることを確認してください。

"editor.formatOnType": true

クイックフィックス

リンターがソースコードでエラーや警告を見つけた場合、Ruby LSP は多くの場合、推奨されるクイック修正 (コードアクションとも呼ばれます) を提供できます。これらはエディターの電球ホバーで利用できます。⌘. (Windows, Linux Ctrl+.) を使用して、利用可能なクイック修正をすばやく開くことができます。

Quick Fixes for linting violations

さらに、コードアクションウィジェット: 近接クイック修正を含める (editor.codeActionWidget.includeNearbyQuickFixes) はデフォルトで有効になっている設定で、カーソルがその行のどこにあっても、⌘. (Windows, Linux Ctrl+.) (コマンド ID editor.action.quickFix) から行内の最も近いクイック修正をアクティブにします。

このコマンドは、クイックフィックスでリファクタリングまたは修正されるソースコードをハイライト表示します。通常のコードアクションと修正以外のリファクタリングは、カーソル位置で引き続きアクティブ化できます。

リファクタリング

クイック修正に加えて、Ruby LSP はコードアクションを通じてリファクタリングオプションも提供します。たとえば、Ruby の式をワンクリックでローカル変数に抽出できます。

Refactor extract to variable

デバッグ

Ruby LSP 拡張機能は、デバッグ gem (Ruby の公式デバッガー) を使用したデバッグをサポートしています。あるいは、開発者は VS Code RDBG 拡張機能をインストールしてデバッグ機能を利用することもできます。

以下のドキュメントは Ruby LSP のデバッガークライアントに関するものです。設定方法については、RDBG の README を参照してください。

テストのデバッグ

Ruby LSP は、単体テストの上に CodeLens ボタンを追加します。これにより、テストエクスプローラーで例を実行したり、新しいターミナルで実行したり、デバッガーを起動したりできます。これらの使用では、設定は不要です。

Test running code lenses

起動タスクによるデバッグ

起動タスクを通じてデバッガーを使用するには、launch.json ファイルにデバッグ構成を作成する必要があります。この構成により、実行するプログラムを設定できます。

Ruby プログラム用の launch.json を作成するには

  1. デバッグビュー (⇧⌘D (Windows, Linux Ctrl+Shift+D)) で、launch.json ファイルを作成するリンクを選択します。
  2. これにより、いくつかのデフォルトの起動構成タイプを含むドロップダウンが表示されます。最初のオプションを選択できますが、さらに構成を追加します。
  3. これで、作成された .vscode/launch.json ファイルを編集して、デバッグのために Ruby プログラムを起動する方法を増やすことができます。

{
  "version": "0.2.0",
  "configurations": [
    // Launch the debugger for any given program. In this case, it will run the current file using Ruby
    {
      "type": "ruby_lsp",
      "name": "Debug",
      "request": "launch",
      "program": "ruby ${file}"
    },
    // Launch the debugger for the current test file
    {
      "type": "ruby_lsp",
      "request": "launch",
      "name": "Debug test file",
      "program": "ruby -Itest ${relativeFile}"
    },
    // Attach the debugger client to an existing Ruby process that has already been launched with the debugger
    // server
    {
      "type": "ruby_lsp",
      "request": "attach",
      "name": "Attach to existing server"
    }
  ]
}

起動構成を追加した後、ブレークポイントを追加し、起動タスクを実行することで Ruby プログラムをデバッグできます。

  1. Ruby ファイルを開き、エディターの左側のガターをクリックしてブレークポイントを設定します。赤い点として表示されるはずです。

    Red breakpoint dot in the left gutter of the editor

  2. 実行とデバッグで目的のタスクを選択し、デバッグ開始ボタン (デフォルトのキーボードショートカット F5) をクリックしてデバッグを開始します。

    Debug session stopped at breakpoint

次のステップ

これは、VS Code 内での Ruby LSP 拡張機能の機能を簡単に紹介したものです。詳細については、特定のVS Code エディター構成を調整する方法を含む、Ruby LSP のドキュメントに記載されている詳細を参照してください。

Ruby LSP 拡張機能の最新の機能/バグ修正について常に最新情報を得るには、サーバーと VS Code 拡張機能の両方の実装を含むモノレポのリリースページを参照してください。

問題や機能リクエストがある場合は、Ruby LSP のGitHub リポジトリに気軽にログを記録してください。

VS Code についてさらに詳しく知りたい場合は、以下のトピックを試してください