RubyMine 快速入门
RubyMine 是一个 集成开发环境 (IDE) ,可以在 Ruby/Rails 项目的各个开发阶段帮助您提高效率——从编写和调试代码到测试和部署完整的应用程序。 RubyMine 可用于不同的平台,包括 macOS、Windows 和 Linux。
在本教程中,我们将向您展示主要的 RubyMine 功能,通过一个为 fork 创建的示例应用程序,该应用程序是为 Ruby on Rails Tutorial 创建的。 在开始本教程之前,请执行以下操作:
安装 Git。
为您的平台安装 Ruby distribution。
安装和设置 RubyMine.
我们将使用安装在 macOS 上的 RubyMine 来执行所有步骤。
克隆项目
首先,我们需要克隆包含示例应用程序的存储库:
选择 Ruby 解释器并安装 gems
打开项目后,您需要选择所需的 Ruby interpreter 并安装项目中指定的依赖项 Gemfile :
按 Ctrl+Alt+S 打开 首选项 对话框。
转到 语言与框架 | Ruby 解释器 页面并选择所需的解释器。

点击 确定。
现在,让我们安装 Gemfile 中指定的 gems。 RubyMine 允许您使用 Bundler 来管理 gems。 按 Ctrl 两次,然后开始输入 bundle install。 然后,从列表中选择
bundle install命令并按下 Enter。
(可选)默认情况下,如果当前的 项目解释器 未安装 Gemfile.lock 中指定的 Bundler 版本,RubyMine 会自动安装。
在 捆绑安装 对话框中,添加以下参数:
--without production然后,点击 运行。

请等待 RubyMine 安装所有 gems。

运行迁移
在 运行 您的 Rails 应用程序之前,我们需要迁移数据库。
请按两次 Ctrl 并输入
db:migrate。 在下拉菜单中选择 rake db:migrate 并按下 Enter。
保持被调用的 执行 'db:migrate' 对话框中的默认设置,然后点击 确定。

这将在 development.sqlite3 数据库创建在 数据库 文件夹中。
请再次按照第一步中描述的运行
rake db:migrate。 这次,请在 执行 'db:migrate' 对话框中将 环境 选项设置为 test ,然后点击 确定。 创建的 test.sqlite3 数据库将用于运行测试。
浏览项目
RubyMine 提供丰富的导航功能,能够探索任何规模的项目。 您可以在文件之间导航、转到声明、搜索任何类型的实体等。
项目视图
IDE 左侧的项目视图(Alt+1 )显示项目结构。 您可以使用它打开项目中的任何文件、新建文件等。

转到声明
Go to declaration 允许您从任意符号用法导航到符号的声明。 要查看此功能,请按 Ctrl+Shift+N ,开始输入 users_controller ,选择 users_controller.rb 文件并按 Enter。

在打开的 users_controller.rb 文件中,将文本光标放在 User 类旁边,然后按 Ctrl+B。
您将跳转到 user.rb 文件中的类声明。
请注意,您不仅可以跳转到项目实体,还可以跳转到外部库(在我们的例子中是 gems)中的定义。 例如,按住 Ctrl 不放,将鼠标悬停在 has_many 方法上。 当方法变成超链接时,按住键点击它。
RubyMine 将在 ActiveRecord Rails 模块内打开方法定义。
查找用法
让我们尝试使用 Find Usages 操作。 在 users_controller.rb 文件中,向下滚动到 edit 方法,在其旁边放置文本光标并按下 Alt+F7。 在 查找 窗口中,您可以查看此操作使用的位置。

在 Rails 实体之间导航
在处理特定的 Rails 实体(如 controller)时,您可以导航到相关的 view、model、test 或 helper。 将插入符号放在 edit 方法旁边,按 Ctrl+Alt+Home ,选择 视图 并按 Enter。 RubyMine 将打开包含相应视图的 edit.html.erb 文件。
在视图中,您可以使用相同的快捷键,或者使用编辑器边栏中的 图标快速转到相应的操作。
全局搜索
下一个 RubyMine 功能允许您搜索文件、类、符号或选项并跳转到所需的实体。
让我们尝试在 destroy 操作中找到 UsersController。 按两次 Shift 并开始输入 destroy。 RubyMine 列出了查询结果中找到的所有结果。 请从 destroy 操作中选择 UsersController 并按 Enter。

将打开 users_controller.rb 文件并将文本光标放置在 destroy 操作的定义上。
编辑代码
RubyMine 提供多种可在编辑器中使用的代码编辑功能,能够加快开发过程。 这些包括 代码补全、 重构、 代码检查等。
代码补全
RubyMine 可以帮助您完成类、方法、关键字等的名称。 当您调用代码补全时,RubyMine 会分析上下文并建议适用于当前文本光标位置的选项。
例如,打开 users_controller.rb 文件并转到 index 方法,该方法声明在 UsersController 类中。 在方法内输入以下代码,然后输入点号。
由于 User 类继承自 ApplicationRecord 模块,编辑器将显示所有继承的成员。
之后,开始输入 first 以筛选列表并找到来自 Querying 模块的相应成员,然后按下 Enter。
Intentions
意图可以帮助您快速应用各种代码更改:优化语句以获得更好的代码风格,将字符串添加到语言环境词典,使用语言注入,等等。
要查看意图的实际效果,打开 user.rb 文件并向下滚动到 User.digest 方法,该方法使用多行三元运算符 ?:。 根据 Ruby 风格指南 ,建议将此类运算符替换为 if/then/else/end 块。 要做到这一点,请将文本光标放置在这个三元表达式处(例如,ActiveModel 旁边),然后按 Alt+Enter。 按 Enter 将三元运算符转换为 if/then/else/end 代码块。
重构代码
代码重构是修改源代码以使其更易于维护和扩展的过程,但不会改变其行为。 让我们看看 RubyMine 中提供的一些重构功能。
Rename 重构允许您重命名类、方法、文件、变量和参数,并相应地更正代码中所有对它们的引用。 打开 user.rb 文件并向下滚动到 downcase_email 方法,该方法在 before_save 回调中被调用。 将文本光标放在此方法旁边,然后按 Ctrl+Shift+I 查看其定义。
按 Escape ,然后按 Ctrl+Alt+Shift+T。 选择 重命名 在 重构 弹出窗口中,该窗口建议多种重构操作。

在 重命名 对话框中,指定一个新方法名(在我们的案例中为 lowercase_email )并点击 重构。

重构预览 窗口将显示所有对重命名方法的引用。

点击 重构 在所有地方重命名该方法。
重新设置代码格式
RubyMine 允许您重新格式化源代码以满足您的 代码风格要求。
让我们重新格式化 user.rb 文件的代码。 打开此文件并按 Ctrl+Alt+L。
RubyMine 将重新格式化整个文件,并显示更改的行数。
分析代码
在本部分中,您将进行静态代码分析并检测问题。
RubyMine 支持多种检查类型,并且允许在 IDE 内显示 RuboCop 违规。 RuboCop 检查在 RubyMine 中默认启用,并要求将 RuboCop gem 添加到项目解释器中。 如果该 gem 未安装,RubyMine 会建议这样做。

让我们打开包含应用程序使用的 gem 列表的 Gemfile 。 将鼠标悬停在 active_storage_validations gem 显示的警告上。

RubyMine 将显示一条 Rubocop 消息,通知您需要按字母顺序排列 gems(请参阅 OrderedGems)。
将文本光标放在 active_storage_validations gem旁边,然后按 Alt+Enter。 编辑器将建议修复所有与 gem 顺序不正确相关的问题。 请按 Enter 执行此操作。
您还可以检查整个项目,并在一个报告中显示所有警告。 要执行此操作,请在主菜单中选择 。 在调用的对话框中,您可以指定所需的检查范围。

请保留 整个项目 选项并点击 分析。 检查结果窗口将显示整个项目的警告。

您可以浏览此报告并修复或忽略特定警告。
运行测试
RubyMine 使您能够使用不同的 测试框架 ,例如 Minitest、RSpec 或 Cucumber。
运行所有测试
我们的项目在 test 文件夹中包含 Minitest 测试。 要运行所有测试,请按 Alt+1 打开项目视图。 然后,右键点击 test 文件夹,并从上下文菜单中选择 。

RubyMine 将运行并在 运行 工具窗口中显示测试结果。
运行特定测试
现在让我们看看如何运行特定测试。 打开 users_controller_test.rb 文件,向下滚动到 should redirect index when not logged in 测试,并点击此测试左侧边栏中的 运行 按钮。

在调用的菜单中选择 运行‘Minitest: test_should_...’。 RubyMine 将显示此测试的结果。

重新运行失败的测试
现在让我们回到 users_controller_test.rb 并破坏两个测试。 对于 should get new 和 should redirect index when not logged in 测试,注释掉 get signup_path 和 get users_path 行。 要执行此操作,请选择这些行并使用 Ctrl+/ 快捷键。

再次运行 运行所有测试 中描述的所有测试。 您现在可以看到这些测试失败了。

让我们在当前打开的 users_controller_test.rb 文件中修复这些测试,取消注释相同的行: get signup_path 和 get users_path。 使用相同的 Ctrl+/ 快捷键。 我们现在可以使用 按钮仅重新运行这些失败的测试。
现在我们准备运行应用程序。
运行应用程序
要运行我们的 Rails 应用程序,请按两次 Ctrl 并开始输入 sample_rails_app。 从列表中选择 sample_rails_app_7th_ed 配置,然后按 Enter。

RubyMine 将展示准备运行应用程序的过程。

请访问 0.0.0.0:3000 地址以查看我们的工作应用程序。

调试应用程序
RubyMine 的一项关键功能是调试支持。 调试器提供了多种方法来检查运行中应用程序的状态。 您可以单步执行代码并检查变量值,对变量设置观察以查看值何时变化,等等。
设置断点并开始调试
首先,打开 users_controller.rb 文件。 在创建新用户的行旁边为 创建 方法设置一个断点。

要开始调试,请按两次 Ctrl 并开始输入 sample_rails_app。 请从列表中选择 sample_rails_app_7th_ed 配置,按住 Shift 键(对话框标题将更改为 Debug ),然后按 Enter。

如果尚未安装调试所需的 debase 和 ruby-debug-ide gem,RubyMine 建议安装它们。

安装 gem 之后, Debug 工具窗口将显示应用程序输出。

在本地计算机上打开浏览器并指定应用程序地址 0.0.0.0:3000 。

请点击 立即注册! 按钮。 在 注册 页面,输入您的凭证并点击 创建我的帐户。

程序将在到达断点时停止。
检查变量
您现在可以检查应用程序状态和变量的值。

线程和变量 面板显示应用程序线程及相应的调用栈。 在我们的例子中,该 创建 方法在 Thread 1中被调用。 在窗格的右侧部分,您可以检查当前上下文中可用的变量。
让我们将 user_params 变量添加到列表中。 在窗格的右侧,在搜索字段中输入 user_params 并点击 。

然后,点击此变量旁边的 图标,然后以相同的方式展开 @parameters 变量。 您将看到在 注册 表单中指定的用户凭据。
一旦断点被触发,您可以逐步执行代码。
单步跳过
Step over 在当前作用域内继续到下一行(例如,转到下一行),而不会进入任何方法调用。
User 对象尚未创建,并且 @user 变量尚未初始化(等于 nil)。

请按 F8 或点击 在 Debug 工具窗口工具栏中。 调试器将跳转到下一行——
if 语句,然后 @user 变量将被初始化。

使用 图标来展开并检查 @user 属性。
单步进入
单步执行将导致调试器进入当前行的方法调用或代码块并跟踪它们。 如果有多个方法调用或块,您可以选择所需的目标。
点击 继续程序执行。 再次打开浏览器,并在 注册 表单中创建另一个用户。 脚本将在到达创建用户的那一行时停止。

按 F7 或点击 按钮。 编辑器将会聚焦于
user_params 方法。 您可以使用箭头键或 Tab 选择要单步进入的方法(在我们的示例中为 new 或 user_params)。 选择 user_params 然后按 Enter。 程序执行将跳转到 user_params 方法定义。
如果您再按一次 F7 ,调试器将建议在 params 和 require 方法之间进行选择,这些方法来自 StrongParameters模块。
在控制台中调试
调试器具有 Console 选项卡,使您能够通过类似 IRB 的控制台与被调试的应用程序进行交互。
在控制台中开始输入 user_params ,选择相应的变量并按 Enter。
Console 窗口将显示变量的值。


