Rubyプロジェクトに「solargraph + rubocop」を入れる

2 min読了の目安(約2400字TECH技術記事

内容

Rubyプロジェクトでの開発を効率化させるために、
コード自動補完ツール「solargraph」と、静的コード解析ツール「rubocop」を入れてみる。

また、開発エディタは「VSCode」を想定している。

環境

  • macOS Catalina 10.15.7
  • ruby 3.0.0p0
  • bundler 2.2.11
  • vscode 1.53.2

実施手順

Gemのインストール

今回は、bundlerを用いてプロジェクト内に対象Gemパッケージをインストールする。

プロジェクトのルートディレクトリに移動

$ cd [project_root_dir_path]

GemfileにGemを追加

以下の様に、GemfileにsolargraphとrubocopのGemパッケージ名を追加する。

Gemfile

group :development, :test do
    gem 'rubocop', require: false
    gem 'solargraph', require: false
end

require: falseとしているのは、アプリ側で一括でGemをImportしようとするときに、
falseとなっているGemはImportしないためである。

また、もしまだGemfileを作成していなければ、
以下の様にbundle initを実行しGemfileを作成してあげる。

$ bundle init
$ bundle config set --local path 'vendor/bundle'

インストールの実行

プロジェクトルートであることを確認し、以下を実行する。

$ bundle install

これでプロジェクト内の./vendor/bundle配下に対象のGemパッケージがインストールされる。

パッケージの確認

正しくインストールされていることを確認する。

$ bundle list | grep solargraph
  * solargraph (0.40.3)
$ bundle list | grep rubocop
  * rubocop (1.10.0)
  * rubocop-ast (1.4.1)

VSCodeプラグインのインストール

VSCodeでsolargraphを有効にするために、以下のプラグインをインストールする。

https://marketplace.visualstudio.com/items?itemName=castwide.solargraph

VSCodeの「Extensions」から、検索窓に「solargraph」と入力すると候補として出てくるので、
そちらをインストールする。

bundler経由でのsolargraph有効化

今回は、bundlerでプロジェクト内にインストールしたsolargraphを使って
コード補完を実現したいので、VSCodeのプラグインがsolargraphを適切に見つけられる様に、
プロジェクト内にあるsolargraphの実行ファイルへのパスを設定してあげる。

設定対象のファイルは、settings.jsonである。

これをプロジェクトルートの.vscodeディレクトリ配下に配置する。

$ cd [project_root_dir_path]
$ mkdir .vscode
$ touch .vscode/settings.json

そして、settings.jsonに以下の内容を記述する。

settings.json

{
    "solargraph.useBundler": true,
    "solargraph.bundlerPath": "$HOME/.rbenv/versions/3.0.0/bin/bundler",
    "ruby.useBundler": true,
    "ruby.lint": {
        "rubocop": true
    }
}

動作確認

ここまでの状態で、プロジェクト内に適当な名前でRubyファイルを作成する。
今回は以下の様にsample.rbというファイルを作成する。

$ touch sample.rb

そして、プロジェクトルートでVSCodeを起動する。

$ code .

solargraphの確認

VSCodeのエディタが立ち上がり、sample.rbを開くと、
solargraph language serverが起動する。

solargraph readyという状態になるので、その状態でsample.rbに文字を入力すると、
無事コード補完が行われる。

rubocopの確認

加えて、sample.rbに適当に入力をしていくと、rubocopのコード解析が走り、
文法的にまずい箇所などを指摘してくれるようになる。