Visual Studio CodeでRubyの開発環境を整えてみようとして失敗した話

ちょっとしたデータの加工に使ってたRuby。最近あまり触っていないので開発環境をまともにしようと色々触ってみました。

 

IDE代わりに使うのはVisual Studio Codeです。理由は今一番使っているエディタだから。EmacsでもVimでもATOMでもありません。そもそも今頃はRubyではなくPythonかその辺りからして流行りに乗っていない感があります。

 

あちこち参考にさせて頂いて設定したのはいいものの、ブレークポイントまでは成功、AutoComplete (入力補完)については失敗という半端な結果に終わっています。

環境

用意するもの

 参考にしたところ

あちこち参考にさせていただきました。Rubyのバージョンが多少古かったりしますが、その辺はそのままでよかったり試行錯誤が必要だったりです。リンク先は記事の最後にまとめました。

 手順

RubyとDevelopment Kitをインストールする

2.4からDevelopment Kitが別配布ではなく本体のインストーラからインストールするように変更になったようです。これまでデバッグ用のGemは別途Development Kitを展開するなど作業が必要でした。

Ruby本体をインストールします。インストール後、デフォルトで"dk.rb install"が実行されるようになっています。コマンドプロンプトが開くので、msysのインストール[1]、アップデート[2]、Development Kitのインストール[3]の順で実行します。msysが既にインストール済みだとエラーが起きる事があるのでアップデート、もしくは一度アンインストールした方がよいそうです。

Gemをインストールする

デバッグに必要なGemをインストールします。はじめに適当なコマンドプロンプトもしくはPowerShellを開き、"gem install bundler"にてbundlerをインストールします。その後、Rubyソースコードを保存するフォルダにて"bundle init"コマンドでGemfileを作成します。ここにインストールするGemを追記します。下記の4つを記入しました。1,2は必須。3はAutoCompleteを実行するため。4は3をインストールすると同時にインストールを推奨されますが必須ではないようです。

gem "ruby-debug-ide"
gem "debase"
gem "rcodetools"
gem "fastri"

VScodeプラグインをインストールする

ダウンロードしたVScodeインストーラを実行、インストールします。VScode本体のインストールが終わったらプラグインをインストールします。VScode拡張機能からMarketplaceでRubyを検索し、Microsoft製の物をインストールします。ショートカットやコマンドパレットの方が早い方はそちらから。

VScode拡張機能の設定

VScodeの左にあるアイコンから虫の形をしたアイコンでデバッグ画面を表示します。左上に歯車のアイコンで設定ファイルを呼び出します。初回はターゲットとなる言語を選択する画面が出てくるようです。今回はRubyを選択し、launch.jsonが表示されます。

"Debug Local File"の欄でターゲットになるソースファイル名(メインのソース)を指定します。デフォルトはmain.rbです。useBundlerオプションの指定をしているサイトもありましたが、ruby-debug-ideをbundler経由で実行するオプションです。これはパス指定でインストールしている場合のみtrue設定のようで、私の環境ではtrueに設定するとエラーで動きませんでした。

また、VScodeの個人設定でrct-completeの場所を指定します。これはGemをインストールした時に追加されます。BATファイルを指定し、引数に"--dev"オプションが必要なようです。

"ruby.rctComplete.commandPath": "D:\\Ruby24-x64\\bin\\rct-complete.bat --dev"

デバッグしてみた結果

これで一通りの設定が終わりました。main.rbを作成し適当なソースを記述、ブレークポイントが有効に働くことが確認できます。putsなど出力結果はVScode下部のデバッグコンソールに表示されます。

AutoCompleteですが、メソッドなどを入力中にCtrl + Spaceで候補が表示されるようです。ようです、と言うのが私の環境では「候補はありません。」と表示され補完されませんでした。参考にさせて頂いたサイトによるとxmpfilter.rbというファイルとrct-completeに問題があり正しく動作しないのが原因のようです。なんてこったい。現状、AutoCompleteを使うにはEclipseなどに頼ったほうがよさそうです。

 

参考にさせて頂いたサイトさま

qiita.com

qiita.com

qiita.com

tokyo.supersoftware.co.jpqiita.com

github.com