教程:附加到远程进程
RubyMine 使您能够附加到本地或远程计算机上的正在运行的进程。 此功能允许您调试无法直接从 IDE 启动的应用程序。
在本主题中,我们将使用此功能调试运行在远程机器上的 示例 Rails 应用程序。
先决条件
在本教程中,我们将使用两台机器来演示远程应用程序的调试:
本地机器 :运行 macOS 的 Mac,已安装 RubyMine 安装 RubyMine。
远程机器 :启用了 SSH 访问并安装了 Ruby 解释器 安装 Ruby 的 Ubuntu 机器。 请注意,远程机器上还应安装 GDB。
在我们的教程中,远程计算机的名称为 sample-web-server 。
在两台机器上,我们将使用 jetbrains用户的主目录来存储源代码。
克隆并运行远程应用程序
首先,我们需要在远程机器上克隆并运行 示例应用程序。 为此, 连接到远程机器并使用 入门章节中的说明。 完成所需步骤后,使用 rails server 命令运行应用程序:

在本地机器上克隆项目
在远程机器上运行示例应用程序后,启动 RubyMine 并使用以下说明在本地机器上打开相同的应用程序: 从远程主机检出项目(git clone)。 在 URL 中,插入以下地址: https://github.com/JetBrains/sample_rails_app.git 。 然后点击 克隆。

配置远程解释器
在本部分中,我们将 使用 SSH配置远程解释器。
打开 设置 对话框 Ctrl+Alt+S ,转到 语言与框架 | Ruby 解释器 页面,单击
按钮并从列表中选择 远程解释器或版本管理器:

在弹出的对话框中,选择 SSH 凭据 并按以下方式指定参数:

SSH 配置 :单击省略号按钮以创建用于连接到远程机器的 SSH 配置。
Ruby 或版本管理器路径 :在此处指定 Ruby 解释器或 版本管理器可执行文件的路径。 在本教程中,我们在远程机器上使用 rbenv。
在指定所有设置后,单击 确定。
如果您在之前的对话框中指定了版本管理器可执行文件的路径,RubyMine 会建议选择所需的 Ruby 解释器。 在此步骤中,您需要选择用于运行远程应用程序的解释器。

单击 确定 并在 Ruby SDK 和 Gems 页面中选择添加的解释器。

最后,您需要指定本地和远程项目文件之间的映射。 为此,请单击 编辑路径映射
按钮。 在 编辑项目路径映射 对话框中,指定本地和远程项目根路径。

在我们的案例中,路径将如下所示:
本地路径: /Users/jetbrains/RubymineProjects/sample_rails_app
远程路径: /home/deploy/sample_rails_app
在此对话框中单击 确定 ,然后在 设置 对话框中单击 确定。 现在我们已准备好附加到远程进程并调试应用程序。
附加到远程进程
现在我们已准备好调试远程应用程序。
打开 users_controller.rb 文件,并在 创建 方法中设置断点,位于创建新用户的行旁边。

在主菜单中单击 运行 并选择 附加到进程… 命令。
在弹出的对话框中,在 SSH 组中选择远程连接(在我们的案例中为 sample-web-server@22 ),并选择 puma进程:

Console 选项卡将显示调试器输出:

调试应用程序
要调试应用程序,请在本地机器上打开浏览器并指定应用程序地址。 在我们的示例中,它将是 http://sample-web-server:3000 。

请点击 立即注册! 按钮。 在 注册 页面上,输入所需的用户参数并单击 创建我的帐户。

调试器会在断点处 暂停会话,并使您能够 检查远程应用程序的状态。

例如,您可以检查在 注册 页面上指定的用户参数。
故障排查
如果您在尝试附加到进程时遇到任何问题,请尝试以下解决方案:
确保远程应用程序使用与调试项目 配置的 Ruby 解释器相同的版本运行。
尝试增加调试连接超时时间。 为此,打开 设置 对话框 Ctrl+Alt+S ,转到 生成、执行、部署 | 调试器 页面,并使用 调试连接超时 选项。