たぶん次に環境を作ろうとした時には忘れてると思うのでメモ。
問題
rbenv環境のrubyのプログラムをvscodeで書きたい。デバッグ、コードコンプリートしたい。
VSCode ruby拡張の拡張のページを見ながら設定したが、デバッグ、コードコンプリートができない。
デバッグしようとすると
Debugger terminal error: Process failed: spawn rdebug-ide ENOENT
とエラーになる。
原因
ググって調べてみると、どうもこのエクステンションはユーザシェルのpathを考慮してくれないらしい。つまり、ユーザのrbenv環境を参照せずに/usr/binや/usr/local/binからデバッグツール(rdebug-ide)、コードコンプリートツール(rct-complete)を起動するっぽい。
対応方法
方法は以下の2つ。
- /usr/binや/usr/local/binにrdebug-ide、rct-completeのシンボリックリンクを貼る。
- rdebug-ide、rct-completeの場所をVSCodeの設定ファイルに書く。
ここではVSCodeの設定ファイルに書く方法を説明する。
前提
- osはmac os 10.12.4。(linuxやwindowsはパス等を適宜変更すること。)
- vscodeインストール済み(確認したバージョンは 1.12.1)
- vscodeにruby拡張をインストール済み(確認したバージョンは 0.12.1)
- rbenvでruby環境が/Users/<ユーザ名>/.rbenv/以下にインストール済み。
- 以下のgemをインストール済み
- ruby-debug-ide -v 0.6.0
- debase -v 0.2.2.beta10
- rcodetools
ユーザ設定のsettings.jsonを以下の通り修正する。
{
...
+ "ruby.rctComplete.commandPath": "/Users/<ユーザ名>/.rbenv/shims/rct-complete"
...
}
launch.jsonを以下の通り修正する。
{
...
"configurations": [
{
...
+ "pathToRDebugIDE": "/Users/<ユーザ名>/.rbenv/shims/rdebug-ide",
...
}
}