Open10

VSCodeのDev ContainerでRuby on Railsの開発環境を作る

bisquebisque

まずはVSCodeのドキュメントにあるRubyの環境セットアップを読む。
https://code.visualstudio.com/docs/languages/ruby

Ruby LSP 拡張機能を使うことが推奨されている。

LSPとは Language Server Protocol のことで、Ruby LSPはRuby用のLSPだということだ。

LSPの説明

The Language Server Protocol (LSP) defines the protocol used between an editor or IDE and a language server that provides language features like auto complete, go to definition, find all references etc. The goal of the Language Server Index Format (LSIF, pronounced like "else if") is to support rich code navigation in development tools or a Web UI without needing a local copy of the source code.

LSPはエディタと言語サーバー(とは?)との間で使用されるプロトコルだそうだ。

つまりRuby LSPは、Ruby用のLSPの「実装」だそうだ。プロトコルの実装とは...いまのところまだ抽象度が高くてよく分からない。

とにかくRuby LSPを使うことで、さまざまな便利機能がVSCodeで使えるようになるということだ。

bisquebisque

デフォルトで、Ruby LSPは server gem(とは?)を含むカスタムbundleを .ruby-lsp に作る。そしてRuby SLP serverというものを起動するらしい。

gem ruby-lspというのがRuby SLP serverになるらしい。

ローカルにRubyの開発環境を作っている場合、基本的にデフォルトでいい感じに設定してくれるらしい。

bisquebisque

(ここまでの理解)

  • Ruby LSPはエディタと言語サーバー間のプロトコル
  • Ruby LSP拡張機能は、言語サーバーのセットアップを行い、言語サーバーから得た情報を使って、VSCodeを便利にする
  • 言語サーバーは、(おそらく)ソースコードを解析して、Ruby LSP(プロトコルの方)を使ってVSCodeのRuby LSP拡張機能とやり取りをする
bisquebisque

Dev Containerを使った環境構築についてはこちらを参考にさせてもらう。

https://techblog.aumo.co.jp/articles/2905

Rubyの開発環境にコンテナを使っている場合、コンテナ内に拡張機能をインストールするらしい。(Dev Containerを使ったことがないので、コンテナに拡張機能をインストールするの概念がまだわかってない)

bisquebisque

Dev Containerを使うと、コンテナ側にVSCodeサーバーがインストールされる。ローカルのVSCodeは、コンテナのVSCodeサーバーと通信している。

Dev Containerに拡張機能を追加するということは、コンテナのVSCodeサーバーに拡張機能を追加することを意味する。

Ruby-LSPやsolargraphなどは、コンテナ内の言語サーバーと通信するため、コンテナ側のVSCodeサーバーに拡張機能が必要ということ。

bisquebisque

IntelliJでできていたコードジャンプができない。例えば、モデルのscopeに対するコードジャンプ。

bisquebisque

TODO: デバッガーを導入したい&仕組みを調べたい