VSCodeでRailsのコーディングを快適にしよう!
VSCode上でRailsのコーディングを行う際にメソッド名や変数名を自動補完してくれると、やっぱり作業が捗ります。
そこで、VSCodeの拡張機能Ruby Solargraphを使用して実現したいなと思います。
Ruby Solargraphは、コード解析と自動補完用のRubyGemsであるSolargraphをVSCode上で使用できるようにしてくれる拡張機能です。
今回は、以下の2つの条件下でRailsのコーディング環境を整えてみました。
-
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]
-
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にインストールする場合
- systemにRubyGemsのSolargraphをインストールする
gem install solargraph
- VSCodeのRuby Solargraph拡張機能をインストールする
code --install-extension castwide.solargraph
- VSCodeの
setting.json
に以下の1行を追加する
これにより、systemにインストールしたSolargraph gemを参照するようになる
(falseという値はデフォルト値ですが、この手順では明示的に追加しています。)
"solargraph.useBundler": false,
-
.solargraph.yml
を開発アプリケーションのプロジェクト ディレクトリ直下に生成する
(solargraphの挙動を指定する設定ファイル)
solargraph config
-
.solargraph.yml
の内容を一部修正する
(SolargraphのIssuesにRails対応についてのやり取りがあり、この手法が書いてある)
.
.
# require: [] # この行を、以下のように修正
require: # https://github.com/castwide/solargraph/issues/87
- actioncable
- actionmailer
- actionpack
- actionview
- activejob
- activemodel
- activerecord
- activestorage
- activesupport
.
.
2. RubyGemsのSolargraphをBundler経由でインストールする場合
- Gemfileに以下の1行を追記し、
bundle install
を実行する
gem 'solargraph', group: :development
※補足① - VSCodeのRuby Solargraph拡張機能をインストールする
code --install-extension castwide.solargraph
- VSCodeの
setting.json
に以下の1行を追加する
これにより、Bundler経由でインストールしたSolargraph gemを参照するようになる
"solargraph.useBundler": true,
-
.solargraph.yml
を開発アプリケーションのプロジェクト ディレクトリ直下に生成する
(solargraphの挙動を指定する設定ファイル)
bundle exec solargraph config
-
.solargraph.yml
の内容を一部修正する
(SolargraphのIssuesにRails対応についてのやり取りがあり、この手法が書いてある)
.
.
# 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
と同一のディレクトリに作成します。
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.local
とGemfile.local.lock
を~/.config/git/ignore
ファイルに追記しておけば、Gitで誤ってコミットすることもなく快適です。
[2019/04/04追記]
BUNDLE_GEMFILEを使用した方法だと、VSCode上でRubyのデバッグがうまく動作しませんでした。
原因は追い切れていないのですが、処理の途中でGemfile.localに記述したgemをうまく探し出せないようです。
[2019/10/11追記]
@__hage さんがコメントしてくださった通り、個人でしか使わないのであればBundlerを経由せずsystemにインストールする方法があります。
Bundlerを経由しない場合のインストール方法を追記し、文章全体を見直しました。