如何在Visual Studio Code中调试Rackup应用?解决rbenv兼容问题
我之前搜过类似问题,但没找到和自己方案匹配的解决办法。在Visual Studio Code里调试Ruby编写的Rack应用遇到了麻烦——因为Rack的启动脚本本质是bash脚本,而rebornix.Ruby调试器无法处理它。
我试过一些配置示例,却出现了如下错误:
Fast Debugger (ruby-debug-ide 0.7.3, debase 0.2.5.beta2, file filtering is supported) listens on 127.0.0.1:1234
Uncaught exception: /home/mslinn/.rbenv/shims/rackup:3: syntax error, unexpected string literal, expecting `do' or '{' or '('
[ -n "$RBENV_DEBUG" ] && set -x
^
/home/mslinn/.rbenv/shims/rackup:3: syntax error, unexpected ']', expecting end-of-input
[ -n "$RBENV_DEBUG" ] && set -x^
非调试状态下,我使用bundler启动Rack应用的命令是:
$ bundle exec rackup
我的VS Code启动配置如下:
{ "args": [ "-p", "9292", "-E", "development" ], "cwd": "${workspaceRoot}", "name": "Debug rackup application", "pathToBundler": "${userHome}/.rbenv/shims/bundle", "pathToRDebugIDE": "${userHome}/.rbenv/shims/rdebug-ide", "program": "${userHome}/.rbenv/shims/rackup", "request": "launch", "showDebuggerOutput": true, "type": "Ruby", "useBundler": true, }
当前配置的核心问题是:rbenv的shims是bash脚本,它们会调用对应的gem,但我不想在配置里硬编码gem的路径——因为项目更新gem后,配置会直接失效。
我的Gemfile内容:
source 'https://rubygems.org' gem 'data_mapper' gem 'dm-sqlite-adapter' gem 'sinatra', '>=3.0.5' gem 'sinatra-flash' gem 'warden' gem 'debase', require: false gem 'rackup', require: false gem 'ruby-debug-ide', require: false gem 'rubocop', require: false gem 'rubocop-rake', require: false gem 'rubocop-rspec', require: false gem 'shotgun', require: false gem 'thin', require: false
内容的提问来源于stack exchange,提问作者Mike Slinn

