LoginSignup
75
63

More than 3 years have passed since last update.

VSCodeでRuby Solargraph拡張機能を使ってみた話

Last updated at Posted at 2019-03-28

VSCodeでRailsのコーディングを快適にしよう!

VSCode上でRailsのコーディングを行う際にメソッド名や変数名を自動補完してくれると、やっぱり作業が捗ります。
そこで、VSCodeの拡張機能Ruby Solargraphを使用して実現したいなと思います。

Ruby Solargraphは、コード解析と自動補完用のRubyGemsであるSolargraphをVSCode上で使用できるようにしてくれる拡張機能です。

今回は、以下の2つの条件下でRailsのコーディング環境を整えてみました。

  1. RubyGemsのSolargraphをsystemにインストールする場合

    • Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-65-generic x86_64)
    • rbenv 1.1.2-4-g577f046
    • ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
  2. RubyGemsのSolargraphをBundler経由でインストールする場合

    • Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-65-generic x86_64)
    • rbenv 1.1.2-4-g577f046
    • ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
    • Bundler version 2.0.2

Railsのコーディング環境を整えてみる

(1.) (2.)の手順で説明が冗長になっている箇所がありますが、手順に沿って操作する際のやりやすさを考慮した結果ですのでご了承ください。

1. RubyGemsのSolargraphをsystemにインストールする場合

  1. systemにRubyGemsのSolargraphをインストールする
    gem install solargraph
  2. VSCodeのRuby Solargraph拡張機能をインストールする
    code --install-extension castwide.solargraph
  3. VSCodeのsetting.jsonに以下の1行を追加する
    これにより、systemにインストールしたSolargraph gemを参照するようになる
    (falseという値はデフォルト値ですが、この手順では明示的に追加しています。)
    "solargraph.useBundler": false,
  4. .solargraph.ymlを開発アプリケーションのプロジェクト ディレクトリ直下に生成する
    (solargraphの挙動を指定する設定ファイル)
    solargraph config
  5. .solargraph.ymlの内容を一部修正する
    (SolargraphのIssuesにRails対応についてのやり取りがあり、この手法が書いてある)
.solargraph.yml
  .
  .
# require: [] # この行を、以下のように修正
require: # https://github.com/castwide/solargraph/issues/87
- actioncable
- actionmailer
- actionpack
- actionview
- activejob
- activemodel
- activerecord
- activestorage
- activesupport
  .
  .

2. RubyGemsのSolargraphをBundler経由でインストールする場合

  1. Gemfileに以下の1行を追記し、bundle installを実行する
    gem 'solargraph', group: :development ※補足①
  2. VSCodeのRuby Solargraph拡張機能をインストールする
    code --install-extension castwide.solargraph
  3. VSCodeのsetting.jsonに以下の1行を追加する
    これにより、Bundler経由でインストールしたSolargraph gemを参照するようになる
    "solargraph.useBundler": true,
  4. .solargraph.ymlを開発アプリケーションのプロジェクト ディレクトリ直下に生成する
    (solargraphの挙動を指定する設定ファイル)
    bundle exec solargraph config
  5. .solargraph.ymlの内容を一部修正する
    (SolargraphのIssuesにRails対応についてのやり取りがあり、この手法が書いてある)
.solargraph.yml
  .
  .
# require: [] # この行を、以下のように修正
require: # https://github.com/castwide/solargraph/issues/87
- actioncable
- actionmailer
- actionpack
- actionview
- activejob
- activemodel
- activerecord
- activestorage
- activesupport
  .
  .

設定完了!

これで自動補完が効くようになっているはずです。
.solargraph.ymlについては、プロジェクトがGit管理されているのであれば除外するように~/.config/git/ignoreファイルに追記しておいた方がいいかもしれませんね。

### 補足①

プロジェクトのGemfileがGit管理されている場合、個人でしか使わないgemについて追記するのは抵抗があります。調べてみると、次のようは方法があるようです。

参考
Gemfileにないgemを使いたい
https://qiita.com/vzvu3k6k/items/12aff810ea93c7c6f307

まず、Gemfile.localというファイルをGemfileと同一のディレクトリに作成します。

Gemfile.local
eval_gemfile "Gemfile"

gem 'solargraph', group: :development

そして、bundle installを実行する際にBUNDLE_GEMFILE="Gemfile.local"を付加します。

BUNDLE_GEMFILE="Gemfile.local" bundle install

こうすると、Gemfile.lockではなくGemfile.local.lockが生成されます。

Gemfile.localGemfile.local.lock~/.config/git/ignoreファイルに追記しておけば、Gitで誤ってコミットすることもなく快適です。

[2019/04/04追記]
BUNDLE_GEMFILEを使用した方法だと、VSCode上でRubyのデバッグがうまく動作しませんでした。
原因は追い切れていないのですが、処理の途中でGemfile.localに記述したgemをうまく探し出せないようです。
[2019/10/11追記]
@__hage さんがコメントしてくださった通り、個人でしか使わないのであればBundlerを経由せずsystemにインストールする方法があります。
Bundlerを経由しない場合のインストール方法を追記し、文章全体を見直しました。

75
63
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
75
63