Windows10でvscodeを起動し、Remote Development(WSL)で実行しています。
WSL(ubuntu18.04)ではanyenv->rbenvでrubyの環境を構築してあり、アプリケーションはsinatraを利用しています。
普段実行してるコマンドであるbundle exec rackup config.ru
をdebug実行するにはbundle exec rdebug-ide --host 0.0.0.0 --port 1234 -- bundle exec rackup config.ru
であるが、実行してもNo Such File ErrorかSyntaxErrorが発生します。前者はbundleをフルパスで指定していないから。後者はrbenvのbundleコマンドはruby実装ではなくshell scriptで実装されたラッパーだからである。
現在利用しているbundleコマンドの最終的なパスはrbenv which bundle
で取得できるので、以下のように実行するとOKである。
bundle exec rdebug-ide --host 0.0.0.0 --port 1234 -- $(rbenv which bundle) exec rackup config.ru |
設定手順一覧
1. VSCodeのRemote Development (WSL)を構築する
ここは本筋とは違うので省略。Remote DevelopmentがONの場合はフッタがこんな感じで表示されます。
2. VSCodeのExtensionをインストールする
Extensionをインストール後はVSCodeの再起動が必要。
3. VSCodeのデバッグ設定の追加
VSCodeのメニューから、デバッグ > 構成の追加 > Ruby > Listen for rdebug-ide
を選択。
次のファイルが生成される。
{ |
RemoteDevelopment先がWSLの場合は、remoteWorkspaceRoot
を書き換えなくてもOKでした。
4. Gemfileに必要なgemを追加
開発環境の時だけ。
group :development do |
bundle install
5. 実行
Terminalを立ち上げると、bashが起動するはずなので、次のコマンドを実行。
bundle exec rdebug-ide --host 0.0.0.0 --port 1234 -- $(rbenv which bundle) exec rackup config.ru |
Fast Debugger (ruby-debug-ide 0.7.0, debase 0.2.4.1, file filtering is supported) listens on 0.0.0.0:1234 |
VSCodeのメニューから、デバッグ > デバッグの開始
を実行。次のようにアプリが実行されたログが出れば成功。
[2020-03-06 14:32:50] INFO WEBrick 1.4.2 |
後は、VSCode上でブレークポイントを設定するなどして、いつものようにデバッグできる。