11

我想使用 Rubymine 的 IDE 调试器来调试在命令 shell 中运行的 ruby​​ 进程,因为它是由“rails 控制台”生成的。

在运行 Web 服务器(从 Rubymine 中)或测试套件(也从 Rubymine 中运行)时,我从调试器中获得了很大的收益。

但是,如果该过程不是由 Rubymine 启动的,我将不知道如何附加调试器。

我在带有 Sun Java 1.6.0_26、Ruby REE 1.8.7 和最新调试 gem 的 Ubuntu 上使用 Rubymine 3.2.4 版本:

ruby-debug-base (0.10.4)
ruby-debug-ide (0.4.17.beta8)

想法?

4

3 回答 3

7

在 RubyMine 中使用Ruby Remote Debug配置类型。有关详细信息,请参阅官方RubyMine 文档

基本上你像这样运行脚本:

rdebug-ide --port <port number> -- script.rb

然后从 RubyMine 调试器连接到指定的端口。

于 2012-01-16T22:01:47.343 回答
7

这就是你在 Rails 中的做法:

首先,确保您已rdebug-ide安装:

gem install ruby-debug-ide --platform=ruby

接下来,在控制台中运行它:

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console

或用于轨道 4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console

或者,正如下面提到的@ChristopherWill ,--host如果您希望调试非本地服务器,您可以传递一个参数。(阅读下面的评论以获取警告)

这将等待远程调试客户端连接。

  1. 点击 Run > Edit Configurations in RubyMine 然后添加一个“Ruby Remote Debug”实例

  2. 使用与上述 6778 相同的端口(如果更改上述端口,请确保端口匹配)

  3. 根文件夹和本地根文件夹相同,/projects/your_rails_project

  4. 单击应用并关闭。

接下来,从运行和调试按钮旁边的列表中选择此配置,然后单击调试按钮。给它几秒钟,控制台将在你运行“rdebug-ide”的地方运行“rails console”

于 2012-06-11T20:05:21.000 回答
3

我真的很想在这里发布一些很难找到完整答案的东西,我花了很长时间才弄清楚。有人问如何将远程调试附加到 resque worker,这是最终对我有用的正确方法。这篇文章在谷歌搜索上很高,很容易找到。

从服务器上的 SHELL(对我来说是我的笔记本电脑)从您的站点根目录执行此操作: rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 bin/rake resque:work QUEUE=*

在 RubyMine IDE 中配置远程调试:远程主机:127.0.0.1 远程端口:1236 远程根文件夹:服务器上的路径到站点根本地端口:26166 本地根路径:工作站上的路径到您将设置断点的根文件(在我的情况下,它全部是本地的,所以它全部是 1 个路径和 1 个文件副本)

使用以下命令正常运行您的 Web 服务器: rails s

在您的 Resque 工作程序中设置一个断点并尝试在您的站点中执行您需要执行的任何操作以使您到达该断点。

1 注意 - 拥有“弹簧”宝石给了我错误,我不得不将其注释掉/捆绑。

于 2015-10-31T03:22:41.330 回答