VSCodeにsolargraphを導入する

曖昧だったVSCodeへのsolargraphの導入について整理したのでまとめておきます。

結論

VSCodeでsolargraphを使うにあたって以下の2つが必要。

下記手順で導入、設定する。

  1. VSCode拡張機能Ruby Solargraph の導入
  2. solargraph gemの導入
  3. yard gemを使ってYARDドキュメントを作成
  4. VSCodeのsettings.jsonに設定の追加

solargraphとは?

Ruby用のコード補完、関数の説明などのインテリセンスが使えるようになるツール。

castwide/solargraph: A Ruby language server.

動作についてはSolargraph公式を見てもらうとイメージしやすいかもしれない。

1. VSCode拡張機能 Ruby Solargraph導入

solargraph gemを使うために必要。下記のInstall をクリックするとVSCodeにインストールできる。

Ruby Solargraph - Visual Studio Marketplace

2. solargraph gemの導入

gemのには次の2つの方法があります。

  • bundlerを使いプロジェクト毎にインストールする
  • グローバルにインストールする

私はプログラミングスクールの課題に不必要なgemをGemfileに書きたくなかったのでグローバルにインストールする方法で行いました。

bundlerを使いプロジェクト毎にインストールする方法

Gemfileにsolargraphを追記し、インストールします。

gem 'solargraph', group: :development
$ cd project_path
$ bundle install

グローバルにインストールする方法

gem install コマンドでグローバルにインストールします。

$ gem install solargraph

3. yard gemを使ってYARDドキュメントを作成

yard gemとはRubyRailsのドキュメント作成ツールです。 作成したドキュメントをsolargraphが参照してインテリセンスを行うようです。 yard gemはsolargraph gemに付随してインストールされます。

参照するYARDドキュメントを作成します。 YARDドキュメントの作成方法はsolargraph gemのインストール方法の違いによって異なります。

solargraphをbundlerを使ってインストールした場合のYARDドキュメントの作成

プロジェクト毎のYARDドキュメントを作成します。

$ cd project_path
$ bundle exec yard gems

solargraphをグローバルにインストールした場合のYARDドキュメント作成

グローバルで使用するYARDドキュメントを作成します。

$ yard gems

4. VSCodeのsettings.jsonに設定の追加

solargraphの動作設定を追加します。 ここもsolargraph gemのインストール方法によって異なります。 VSCodeの設定ファイルであるsettings.json を開き設定を追加します。

solargraphをbundlerを使ってインストールした場合の動作設定

bundlerでインストールしたsolargraphのパスを調べる

$ cd project_path
$ which solargraph
# 表示されたパスをコピーしておく

bundlerでインストールされたsolargraph gemを使うように設定します。

// settings.json
{
  "solargraph.useBundler": true,
  "solargraph.commandPath": '表示されたパスを指定'
}

solargraphをグローバルにインストールした場合の動作設定

グローバルでインストールしたsolargraph gemを使うように設定します。

// settings.json
{
  "solargraph.useBundler": false,
}

この設定はデフォルトでfalse に設定されていますがあえて明示的に設定しています。

共通のおすすめ設定

個人的におすすめの設定です。この部分はインストール方法に関係しない設定なのでお好みで追加してください。

{
  "solargraph.diagnostics": true,
  "solargraph.autoformat": true,
}

solargraph.autoformat: 入力中に自動フォーマットを有効化 solargraph.formatting: ドキュメントの書式設定を有効化、solargraphのフォーマットにRuboCopを使用

solargraph.autoformat に関しては私の場合はrubocopを使っているので、他のフォーマッタを使用する場合には競合を加味した設定が別途必要そうです。

rubocop + Solargraph + VSCode設定 - 技術メモ

このあたりは他のツールとの兼ね合いもあるので別記事でまとめたいと思います。

まとめ

solargraphの設定について整理できたので良かった。環境が変わるとたまに出くわすsolargraph周りのエラーにもしっかり解決できるようになりたい。

参照

castwide/solargraph: A Ruby language server.

Solargraph: A Ruby Language Server

Ruby Solargraph - Visual Studio Marketplace

lsegal/yard: YARD is a Ruby Documentation tool. The Y stands for "Yay!"

rubocop + Solargraph + VSCode設定 - 技術メモ