我的问题是我如何让vimspector运行一个ruby on rails应用程序运行乘客(我认为)
我正在尝试用我正在做的ruby on rails项目来设置vimspector。基本上问题是vimspector在一些应用程序中没有在断点处停止。这些应用程序使用passenger。在一个非常基本的示例应用程序中,vimspector工作得很好,但在我真正需要调试的应用程序中就不行了。
说明:
当我调用vimspector#Launch时,所有的分割/窗口都出现了,并且一个 * 乘客应用程序 * 服务器启动了。我在一些项目上不是单独工作的,所以我不能真正地将其更改为另一个。
我设置了一些断点,并执行了一些应该在断点处停止的操作,但它们像 * 没有 * 调试器一样运行。在拆分中,除了线程运行和rails服务器的控制台输出外,什么也没有显示。在我的进程中,显示了2个进程。一次是Passenger Ruby应用程序,另一次是节点进程进入调试器所需的cust_vscode-ruby目录。节点进程有子进程rdebug-ide和rdebug-ide具有乘客启动。
由于vimspector可以很好地使用示例Rails应用程序,我不认为这是安装或类似的问题。
我试着切换到attach,但是当配置它为attach时,我在浏览器中没有超时就得到了无休止的加载。我运行rdebug-ide的终端窗口启动时没有任何响应,我启动了vimspector,服务器正在启动。但是,它在此停止,并且从未超过启动Run rails server -h for more startup options
。之后,乘客正常启动。切换到附加模式后,只有rdebug控制的rails服务器会显示在我的进程中。
我认为这应该是可能的,因为我正在使用ruby-debug-ide,这是由RubyMine使用,我可以调试运行乘客的应用程序很好。我很确定这是与乘客有关,因为在启动配置中调用它导致它逃逸,使用附加配置导致它阻止Rails服务器 Boot 。但我不知道如何修复它。
. vimspector.json*对于示例应用程序和实际应用程序相同 *:
{
"configurations": {
"rails": {
"adapter": "cust_vscode-ruby",
"default": true,
"configuration": {
"name": "Debug Rails server",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"pathToBundler": "/Users/username/.rvm/rubies/ruby-version/bin/bundler",
"pathToRDebugIDE": "/Users/username/.rvm/gems/ruby-version/gems/ruby-debug-ide-0.7.3",
"program": "${workspaceRoot}/bin/rails",
"args": [
"server"
]
}
}
}
}
vimspector配置输出
Vimspector Debug Info
--------------------------------------------------------------------------------
ConnectionType: job
Adapter:
--------------------------------------------------------------------------------
{
"command": [
"node",
"/Users/username/.vim/plugged/vimspector/gadgets/macos/cust_vscode-ruby/dist/debugger/main.js"
],
"configuration": {
"cwd": "/Users/username/Folder/app-name",
"showDebugOutput": false,
"trace": false
},
"name": "vscode-ruby-debug",
"env": {},
"cwd": "/Users/username/Folder/app-name"
}
--------------------------------------------------------------------------------
Configuration:
--------------------------------------------------------------------------------
{
"adapter": "cust_vscode-ruby",
"default": true,
"configuration": {
"name": "Debug Rails server",
"type": "Ruby",
"request": "launch",
"cwd": "/Users/username/Folder/app-name",
"pathToBundler": "/Users/username/.rvm/rubies/ruby-version/bin/bundler",
"pathToRDebugIDE": "/Users/username/.rvm/gems/ruby-version/gems/ruby-debug-ide-0.7.3",
"program": "/Users/username/Folder/app-name/bin/rails",
"args": [
"server"
]
}
}
--------------------------------------------------------------------------------
API Prefix:
Launch/Init: True / True
Workspace Root: /Users/username/Folder/app-name
Launch Config:
--------------------------------------------------------------------------------
{
"cwd": "/Users/username/Folder/app-name",
"showDebugOutput": false,
"trace": false,
"name": "Debug Rails server",
"type": "Ruby",
"request": "launch",
"pathToBundler": "/Users/username/.rvm/rubies/ruby-version/bin/bundler",
"pathToRDebugIDE": "/Users/username/.rvm/gems/ruby-version/gems/ruby-debug-ide-0.7.3",
"program": "/Users/username/Folder/app-name/bin/rails",
"args": [
"server"
]
}
--------------------------------------------------------------------------------
Server Capabilities:
--------------------------------------------------------------------------------
{
"supportsConfigurationDoneRequest": true,
"supportsConditionalBreakpoints": true
}
--------------------------------------------------------------------------------
Line Breakpoints:
--------------------------------------------------------------------------------
{
"/Users/username/Folder/app-name/app/controllers/.../somethings_controller.rb": [
{
"state": "ENABLED",
"line": 83,
"options": {},
"sign_id": 1,
"server_bp": {
"verified": true,
"line": 83,
"id": 1
}
}
]
}
--------------------------------------------------------------------------------
Func Breakpoints:
--------------------------------------------------------------------------------
[]
--------------------------------------------------------------------------------
Ex Breakpoints:
None
1条答案
按热度按时间6tdlim6h1#
所以我让它工作,而不是与乘客本身。
我把我的vimspector配置更改为如下,通过反复试验切换到所用的二进制文件的一些路径(我认为重要的是在项目根目录中调用rails二进制文件)。重要的是在args server中调用-u puma。确保将命令的每个部分编写为单个参数。puma是默认的rails服务器(我发现它在我的示例应用程序中),所以rdebug-ide和debase会选择它。
}
我发现了一些使用passenger的选项,它可能需要将config写为attach。
看起来最接近(但它不起作用)的答案似乎是复制了调用以下命令的rubymine配置:
我认为它可能会失败的一个点,以及它不工作的原因是需要将乘客设置为允许调试(
PassengerDebugger on
)、虽然我可能只是混淆这里的一切。然而,这乘客的选择是保留给企业版(https://www.phusionpassenger.com/library/admin/apache/debugging_console/ruby/)。我的问题是启动了这个调试配置,但无法连接到套接字。也许这是一些安全措施,我做了严密的为我自己好,对我的系统或更有可能是一个错误的配置。我认为这是可能的附加到乘客服务器适当不知何故,一些想法可能会在这里找到,但我没有得到任何地方与他们. https://mondotondo.com/2012/08/23/how-to-remotely-debug-rails-in-apache-passenger-rubymine/How can I get ruby-debug-ide to work?
如果你像我一样在这件事上挣扎,坚持下去,总有一天你会得到它的!