IntelliJ IDEA 2025.1 Help

在 IntelliJ IDEA 内开始一个 Rails 项目

IntelliJ IDEA 是一个 集成开发环境 (IDE) ,可以在 Ruby/Rails 项目的各个开发阶段帮助您提高效率——从编写和调试代码到测试和部署完整的应用程序。 IntelliJ IDEA 可用于不同的平台,包括 macOS、Windows 和 Linux。

在本教程中,我们将向您展示主要的 IntelliJ IDEA 功能,通过一个为 fork 创建的示例应用程序,该应用程序是为 Ruby on Rails Tutorial 创建的。 在开始本教程之前,请执行以下操作:

我们将使用安装在 macOS 上的 IntelliJ IDEA 来执行所有步骤。

克隆项目

首先,我们需要克隆包含示例应用程序的存储库:

  1. 运行 IntelliJ IDEA 并点击 从版本控制中获取克隆存储库欢迎界面

    欢迎界面 / 从版本控制获取
  2. 克隆仓库 对话框中,执行以下操作:

    从版本控制获取对话框
    • 确保在 Git 中选择 版本控制 字段。

    • 请在 URL 字段中插入以下地址:

      https://github.com/JetBrains/sample_rails_app_7th_ed.git

    请点击 克隆 按钮。 IntelliJ IDEA 将显示一个进度条,指示克隆过程。

  3. 克隆存储库后,IntelliJ IDEA 会打开项目并开始索引过程。 您可以在 状态栏中查看进度。

    正在编制索引

    IntelliJ IDEA 会索引您的项目以分析其源代码,并收集可用文件、类和方法定义等信息。 这是代码洞察功能(如 代码补全导航 )所必需的。

选择 Ruby 解释器并安装 gems

打开项目后,您需要选择所需的 Ruby interpreter 并安装项目中指定的依赖项 Gemfile

  1. 请前往 文件 | 项目结构 ,或按 Ctrl+Alt+Shift+S

  2. 在调用的 项目结构 对话框中,切换到 模块 页并选择 Ruby 解释器。

    项目结构对话框 / 模块页面

    点击 OK

  3. 现在,让我们安装 Gemfile 中指定的 gems。 IntelliJ IDEA 允许您使用 Bundler 来管理 gems。 按 Ctrl 两次,然后开始输入 bundle install。 然后,从列表中选择 bundle install 命令并按下 Enter

    运行 Anything / bundle install
  4. (可选)如果当前 项目解释器 中没有 Gemfile.lock 指定的所需 Bundler 版本,IntelliJ IDEA 会建议安装它。

  5. 捆绑安装 对话框中,添加以下参数:

    --without production

    然后,点击 运行

    Bundle Install 对话框
  6. 请等待 IntelliJ IDEA 安装所有 gems。

    运行工具窗口/安装 gems

运行迁移

运行 您的 Rails 应用程序之前,我们需要迁移数据库。

  1. 请按两次 Ctrl 并输入 db:migrate。 在下拉菜单中选择 rake db:migrate 并按下 Enter

    运行任何内容 / rake db:migrate
  2. 保持被调用的 执行 'db:migrate' 对话框中的默认设置,然后点击 OK

    执行 db:migrate

    这将在 development.sqlite3 数据库创建在 db 文件夹中。

  3. 请再次按照第一步中描述的运行 rake db:migrate。 这次,请在 执行 'db:migrate' 对话框中将 环境 选项设置为 test ,然后点击 OK。 创建的 test.sqlite3 数据库将用于运行测试。

IntelliJ IDEA 提供丰富的导航功能,能够探索任何规模的项目。 您可以在文件之间导航、转到声明、搜索任何类型的实体等。

项目视图

IDE 左侧的项目视图(Alt+1 )显示项目结构。 您可以使用它打开项目中的任何文件、新建文件等。

项目视图

转到声明

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

跳转到文件

在打开的 users_controller.rb 文件中,将文本光标放在 用户 类旁边,然后按 Ctrl+B

您将跳转到 user.rb 文件中的类声明。

请注意,您不仅可以跳转到项目实体,还可以跳转到外部库(在我们的例子中是 gems)中的定义。 例如,按住 Ctrl 不放,将鼠标悬停在 has_many 方法上。 当方法变成超链接时,按住键点击它。

IntelliJ IDEA 将在 ActiveRecord Rails 模块内打开方法定义。

查找用例

让我们尝试一下 Find usages操作。 在 users_controller.rb 文件中,向下滚动到 edit 方法,在其旁边放置文本光标并按下 Alt+F7。 在 查找 窗口中,您可以查看此操作使用的位置。

查找用例

在处理特定的 Rails 实体(如 controller)时,您可以导航到相关的 view、model、test 或 helper。 将插入符号放置在 edit 方法旁边,按下 Ctrl+Alt+Home ,选择 视图 并按下 Enter。 IntelliJ IDEA 将打开包含相应视图的 edit.html.erb 文件。

在视图中,您可以使用相同的快捷键,或者使用编辑器边栏中的 从视图导航到操作 图标快速转到相应的操作。

随处搜索

下一个 IntelliJ IDEA 功能允许您搜索文件、类、符号或选项并跳转到所需的实体。

让我们尝试在 destroy 操作中找到 UsersController。 按两次 Shift 并开始输入 destroy。 IntelliJ IDEA 列出了查询结果中找到的所有结果。 请从 destroy 操作中选择 UsersController 并按 Enter

随处搜索

将打开 users_controller.rb 文件并将文本光标放置在 destroy 操作的定义上。

编辑代码

IntelliJ IDEA 提供多种可在编辑器中使用的代码编辑功能,能够加快开发过程。 这些包括 代码补全重构代码检查等。

代码补全

IntelliJ IDEA 可以帮助您完成类、方法、关键字等的名称。 当您调用代码补全时,IntelliJ IDEA 会分析上下文并建议适用于当前文本光标位置的选项。

例如,打开 users_controller.rb 文件并转到 index 方法,该方法声明在 UsersController 类中。 在方法内输入以下代码,然后输入点号。

@user = User

由于 用户 类继承自 ApplicationRecord 模块,编辑器将显示所有继承的成员。

之后,开始输入 first 以筛选列表并找到来自 Querying 模块的相应成员,然后按下 Enter

意图

意图可以帮助您快速应用各种代码更改:优化语句以获得更好的代码风格,将字符串添加到语言环境词典,使用语言注入,等等。

要查看意图的实际效果,打开 user.rb 文件并向下滚动到 User.digest 方法,该方法使用多行三元运算符 ?:。 根据 Ruby Style Guide ,建议用 if/then/else/end 块替换此类运算符。 要做到这一点,请将文本光标放置在这个三元表达式处(例如,ActiveModel 旁边),然后按 Alt+Enter。 按 Enter 将三元运算符转换为 if/then/else/end 代码块。

重构代码

代码重构是修改源代码以使其更易于维护和扩展的过程,但不会改变其行为。 让我们看看 IntelliJ IDEA 中提供的一些重构功能。

Rename 重构允许您重命名类、方法、文件、变量和参数,并相应地更正代码中所有对它们的引用。 打开 user.rb 文件并向下滚动到 downcase_email 方法,该方法在 before_save 回调中被调用。 将文本光标放在此方法旁边,然后按 Ctrl+Shift+I 查看其定义。

Escape ,然后按 Ctrl+Alt+Shift+T。 选择 重命名重构 弹出窗口中,该窗口建议多种重构操作。

重构此弹出窗口

重命名 对话框中,指定一个新的方法名称(在本例中为 lowercase_email ),然后点击 执行重构

重命名对话框

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

请重构

点击 执行重构重构 以在所有位置重命名该方法。

重新设置代码格式

IntelliJ IDEA 允许您重新格式化源代码以满足您的 代码风格要求。

让我们重新格式化 user.rb 文件的代码。 打开此文件并按 Ctrl+Alt+L

IntelliJ IDEA 将重新格式化整个文件,并显示更改的行数。

分析代码

在本部分中,您将进行静态代码分析并检测问题。

IntelliJ IDEA 支持多种检查类型,并且允许在 IDE 内显示 RuboCop 违规。 RuboCop 检查在 IntelliJ IDEA 中默认启用,并要求将 RuboCop gem 添加到模块 SDK。 如果该 gem 未安装,IntelliJ IDEA 会建议这样做。

缺少 Rubocop

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

Rubocop 警告

IntelliJ IDEA 将显示一条 Rubocop 消息,通知您需要按字母顺序排列 gems(请参阅 OrderedGems)。

将文本光标放在 active_storage_validations gem旁边,然后按 Alt+Enter。 编辑器将建议修复所有与 gem 顺序不正确相关的问题。 请按 Enter 执行此操作。

您还可以检查整个项目,并在一个报告中显示所有警告。 要执行此操作,请在主菜单中选择 代码 | 检查代码。 在调用的对话框中,您可以指定所需的检查范围。

检查作用域

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

检查结果

您可以浏览此报告并修复或忽略特定警告。

运行测试

IntelliJ IDEA 使您能够使用不同的 测试框架 ,例如 Minitest、RSpec 或 Cucumber。

运行所有测试

我们的项目在 测试 文件夹中包含 Minitest 测试。 要运行所有测试,请按 Alt+1 打开项目视图。 然后,右键点击 测试 文件夹,并从上下文菜单中选择 运行“测试中的所有测试”

运行目录中的所有测试

IntelliJ IDEA 将运行并在 运行 工具窗口中显示测试结果。

运行特定测试

现在让我们看看如何运行特定测试。 打开 users_controller_test.rb 文件,向下滚动到 should redirect index when not logged in 测试,并点击该测试旁边左侧边距中的 运行 按钮。

运行特定测试

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

测试结果

重新运行失败测试

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

失败的测试

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

失败的测试

让我们通过取消注释相同的行: get signup_pathget users_path ,来修复当前打开的 users_controller_test.rb 文件中的这些测试。 使用相同的 Ctrl+/ 快捷键。 我们现在可以使用 重新运行失败的测试 按钮仅重新运行这些失败的测试。

现在我们准备运行应用程序。

创建运行/调试配置

要运行和调试我们的 Rails 应用程序,我们需要创建一个相应的 Rails 配置。 按 Ctrl+Shift+A 并开始输入 编辑配置。 请选择 编辑配置 并按下 Enter

查找操作

在调用的 运行/调试配置 对话框中,点击 添加新配置 ,开始输入 Rails并从列表中选择它。

运行/调试配置对话框

将创建的配置名称更改为 Development: sample_rails_app并点击 OK

运行/调试配置对话框

运行应用程序

要运行我们的 Rails 应用程序,请按两次 Ctrl 并开始输入 sample_rails_app。 从列表中选择 sample_rails_app_7th_ed 配置,然后按 Enter

运行任何内容 / 运行配置

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

运行工具窗口/运行 Rails 应用程序

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

在浏览器中的 Rails 应用程序

调试应用程序

IntelliJ IDEA 的一项关键功能是调试支持。 调试器提供了多种方法来检查运行中应用程序的状态。 您可以单步执行代码并检查变量值,对变量设置观察以查看值何时变化,等等。

设置断点并开始调试

首先,打开 users_controller.rb 文件。 在创建新用户的行旁边为 create 方法设置一个断点。

设置断点

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

开始调试

如果尚未安装调试所需的 debaseruby-debug-ide gem,IntelliJ IDEA 建议安装它们。

安装调试用的 gems

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

调试控制台输出

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

在浏览器中的 Rails 应用程序

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

用户凭据

程序将在到达断点时停止。

检查变量

您现在可以检查应用程序状态和变量的值。

在断点处停止

线程和变量 面板显示应用程序线程及相应的调用栈。 在我们的例子中,该 create 方法在 Thread 1中被调用。 在窗格的右侧部分,您可以检查当前上下文中可用的变量。

让我们将 user_params 变量添加到列表中。 在窗格的右侧,在搜索字段中输入 user_params 并点击 添加

然后,点击此变量旁边的 展开 图标,然后以相同的方式展开 @形参 变量。 您将看到在 注册 表单中指定的用户凭据。

一旦断点被触发,您可以逐步执行代码。

步过

Step over 在当前作用域内继续到下一行(例如,转到下一行),而不会进入任何方法调用。

用户 对象尚未创建,并且 @user 变量尚未初始化(等于 nil)。

断点

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

步过

使用 展开 图标来展开并检查 @user 属性。

步入

单步执行将导致调试器进入当前行的方法调用或代码块并跟踪它们。 如果有多个方法调用或块,您可以选择所需的目标。

点击 恢复程序 继续程序执行。 再次打开浏览器,并在 注册 表单中创建另一个用户。 脚本将在到达创建用户的那一行时停止。

断点

F7 或点击 步入 按钮。 编辑器将会聚焦于 user_params 方法。 您可以使用箭头键或 Tab 选择要进入的目标方法(在我们的示例中为 newuser_params)。 选择 user_params 然后按 Enter。 程序执行将跳转到 user_params 方法定义。

如果您再按一次 F7 ,调试器将建议在 paramsrequire 方法之间进行选择,这些方法来自 StrongParameters模块。

在控制台中调试

调试器具有 控制台 选项卡,使您能够通过类似 IRB 的控制台与被调试的应用程序进行交互。

在控制台中开始输入 user_params ,选择相应的变量,然后按下 Enter

控制台 窗口将显示变量的值。

最后修改日期: 2025年 4月 24日