Visual Studio Code での Ruby

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

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

Ruby extension banner

インストール

バージョンマネージャーを使用したRubyのインストール

Rubyは一部のオペレーティングシステム(macOSや一部のLinuxディストリビューションなど)にデフォルトでインストールされていますが、より新しいバージョンのRubyを利用できるようにするためにバージョンマネージャーの使用を推奨します。例えば、macOSおよびLinuxでは rbenv、Windowsでは Windows用rbenv があります。お使いのプラットフォームの インストールガイド に従ってください。

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

VS CodeへのRuby LSP拡張機能のインストール

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

Ruby LSP extension in the Extensions view

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

インストールの確認

インストール後、ステータスバーにある言語ステータス項目を確認して、Ruby LSPサーバーの状態を確認します。バージョンマネージャーが設定されている場合、プロジェクトに適した正しいRubyバージョンが表示されるはずです。サーバーのステータスは「starting(起動中)」または「running(実行中)」と表示され、「error(エラー)」になっていない必要があります。

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 > Inlay Hints: Enabled(エディター > インレイヒント: 有効)設定( editor.inlayHints.enabled VS Code で開く VS Code Insiders で開く )からこの機能を無効にすることも、以下を使用してRuby LSPに対してのみこの機能を無効にすることもできます。

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

セマンティック構文ハイライト

Ruby LSPは、プロジェクトのソースコードを高度に理解しているため、セマンティック構文ハイライトとスタイリングを使用できます。

たとえば、以下のようなものをハイライトできます:

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

Ruby LSP semantic highlighting

Note: このスクリーンショットは、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)またはエディターのコンテキストメニューから「ドキュメントのフォーマット」コマンドを実行することで行えます。

プロジェクトで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

さらに、コードアクションウィジェット: 近隣のクイックフィックスを含める ( ... ) 設定はデフォルトで有効になっており、カーソルの位置に関係なく、⌘. (Windows, Linux Ctrl+.) (コマンド ID editor.action.quickFix) からその行の最も近いクイックフィックスをアクティブにします。

このコマンドは、リファクタリングまたはクイック修正で修正されるソースコードを強調表示します。通常のコードアクションおよび非修正リファクタリングは、カーソル位置で引き続きアクティブにできます。

リファクタリング

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

Refactor extract to variable

デバッグ

Ruby LSP拡張機能は、debug 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)で、create a launch.json file リンクを選択します。
  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拡張機能の両方の実装が含まれている モノリポジトリ のReleasesページを参照してください。

問題が発生した場合や機能のリクエストがある場合は、Ruby LSPの GitHubリポジトリ にお気軽に登録してください。

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

© . This site is unofficial and not affiliated with Microsoft.