Visual Studio CodeによるRubyのデバッグ

Visual Studio CodeによるRubyのデバッグ

Clock Icon2016.04.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

好物はインフラとフロントエンドのかじわらゆたかです。
Facebookを見ていたらVisual Studio CodeでRubyがデバッグできるというのを見かけたので、試してみました。

環境

  • OS : OSX El Capitan (10.11.4)
  • Visual Studio Code : 1.0.0
  • rbenv 1.0.0

ruby用の拡張を導入する。

Visual StudioのMarketplaceにしたがってインストールを進めていきます。
Ruby | Visual Studio Marketplace

Visual Studio Code上でF1キーを押下し、ext install rubyと入力することでダイアログが表示されるので、
拡張機能のインストールと選択します。
VSCode_ruby_1 インストールが完了すると、Visual Studio Codeの再起動を促されるため、再起動します。
Untitled-2

閑話休題:ターミナルからVisual Studio Codeを起動する。

先ほどのインストールと同様F1でダイアログを表示させ、シェルと入力することで、PATH内にVisual Studio Code用のCodeというコマンドがインストールできます。 shell 当該の設定を行うことでターミナル上からVisual Studio Codeを起動しさせることが可能です。

Ruby開発用環境を構築していく。

Rubyの導入

適当なディレクトリを作成し、rbenvにて使うrubyのバージョンを指定します。
Visual Studio Codeは1.9.3から2.2.0までテストやったと書いてあるので、2.2.4を用いることとします。

$ mkdir ./ruby_vscode_debug
$ cd ./ruby_vscode_debug
$ rbenv install 2.2.4
$ rbenv local 2.2.4

デバッグ用Gem導入

デバッグ用のgemをbundler経由で導入していきます。

$ gem install bundler
$ bundle init
$ cat Gemfile
# A sample Gemfile
source "https://rubygems.org"

# gem "rails"
gem "ruby-debug-ide"
gem "debase"
$ bundle install

Visual Studio Code用の設定ファイルを作成する。

.vscode/launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Local File",
            "type": "Ruby",
            "request": "launch",
            "program": "${workspaceRoot}/main.rb",
            "useBundler": true
        }
    ]
}

今回はBundler経由で実行をするので、9行目のオプションを有効にする必要があります。
またVisual Studio Codeは導入したプラグインの候補を表示してくれるのには驚きました。
useBundler

実際にRubyのコードを書いてみる。

簡単なコードを書いてみます。

main.rb

a = 10
b = 3 * a + 2
printf("%d %d\n", a, b)

3行目でブレイクポイントを貼り、デバッグを実行してみます。
launchDebug_1_m

launchDebug_2_m

launchDebug_3_m

きちんと設定したブレイクポイントで止まり、止まった際の変数の情報を参照することが可能です。
また、ウォッチ内にて、変数に対して別途処理を行わせるといったことも行えていることが確認できます。

まとめ

RubyのコードのデバッグがVisual Studio Code上で行えることが確認できました。
また、これらの方法を用いてRuby on Railsのデバッグも行えるそうです。
Visual Studio Codeこれからも要チェックかもしれません。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.