Ruby on Rails 教程

⚡ 智能摘要

Ruby on Rails 教程介绍了用 Ruby 编写的开源 Web 框架,该框架为 Airbnb、GitHub 和 Shopify 等公司提供支持。本教程涵盖了安装过程。 WindowsMac 和 Linux,Rails 生成器、路由、视图、ActiveRecord、验证和调试。

  • 💎 语言和框架: Ruby 是一种动态的、面向对象的语言,设计注重可读性;Rails 是一个基于 Ruby 构建的全栈 MVC 框架,用于船舶开发。ping 快速运行Web应用程序。
  • 🛠️ 跨平台设置: 安装 Ruby 和 Rails Windows 使用 RubyInstaller,在 Mac 上通过 Homebrew 安装,以及在 Ubuntu Linux 系统通过 apt 安装,然后使用 gem 安装 rails。
  • 🏛️ 指导原则: Rails 强制执行“不要重复自己”和“约定优于配置”原则,以便团队编写更少的样板代码并遵循可预测的项目结构。
  • ⚙️ Generators 和路由: 使用 rails generate scaffold 生成 CRUD 代码,然后依赖 config/routes.rb 进行 RESTful 路由映射。 URL秒内即可执行控制器操作。
  • 🗄️ ActiveRecord 功能: ActiveRecord 将 Ruby 类映射到数据库表,支持迁移、关联和验证,并保持数据在不同环境中的一致性。

Ruby on Rails 教程

什么是红宝石?

红宝石 Ruby 是一种高级的、解释型的、面向对象的编程语言。它是一种充满活力的开源语言,拥有庞大的社区支持。Ruby 的设计理念是简洁高效,鼓励编写以人为本、计算机为辅的软件代码。Ruby 由松本幸弘于 1995 年在日本创建。

什么是 Rails?

Rails 是一个用 Ruby 编写的 Web 应用程序开发框架。它最初是作为 Basecamp 应用程序的基础而创建的,并于 2004 年作为开源软件发布。Rails 提供了许多内置的标准特性和功能,使其成为 MVP 原型设计的理想选择。ping 以及快速的产品开发。

Rails由David Heinemeier Hansson(简称DHH)创建,是构建Web应用程序最具影响力和最流行的工具之一,被Airbnb、GitHub和Shopify等知名网站广泛使用。

为什么选择 Rails?

在安装工具链之前,了解 Rails 为何仍然是船舶开发的热门选择很有帮助。ping 快速运行Web应用程序。

  • Rails 被打包成 Ruby gem,你可以用它构建各种各样的应用程序。
  • 它允许您构建常规 Web 应用程序、电子商务网站、内容管理系统等等。
  • Rails 是一个全栈框架,它包含了使用模型-视图-控制器 (MVC) 模式创建数据库驱动的 Web 应用程序所需的一切。
  • 所有层都经过精心设计,可以无缝协作,因此 Rails 项目通常比其他框架中的同等项目需要更少的代码行数。

如何在 Windows

安装过程取决于您的操作系统。接下来的章节将介绍如何在操作系统上安装 Ruby。 Windows,Mac和 Linux.

步骤1) 下载 Rubyinstaller。
在你的 Windows 计算机通过 Ruby 安装程序安装,该安装程序可在以下位置获取: https://rubyinstaller.org/.

下载完成后,运行安装程序。

步骤2) 点击下载的安装程序。
Double-点击下载的安装程序文件,例如 rubyinstaller-2.4.1-2-x64.exe.

步骤3) 接受许可协议。
选择“我接受许可”单选按钮,然后单击“下一步”按钮。您应该会看到如下屏幕。

下载并安装 Ruby Windows

步骤4) 勾选前两个复选框。
选中前两个复选框可以使运行 Ruby 脚本更容易。

点击“安装”按钮开始安装。安装完成后,您应该会看到如下所示的屏幕。

下载并安装 Ruby Windows

步骤5) 单击“完成”。
请勿取消勾选安装 MSYS2 的选项。单击“完成”按钮以完成安装。此时将打开一个命令提示符窗口,如下图所示。

下载并安装 Ruby Windows

步骤6) 安装 MSYS2。
此步骤会安装 MSYS2,这是一个构建平台,它具有一个包管理器,可以方便地在系统上安装软件包。 Windows.

按 Enter 键安装所有组件,因为它们都是构建流畅的 Ruby on Rails 开发环境所必需的。 Windows.

下载并安装 Ruby Windows

安装 Rails

你应该已经按照上一节的步骤安装了 Ruby。接下来,安装 Rails。你可以使用一个软件包来安装 Rails。 Rails 安装程序但是,该软件包通常不会提供每个必需依赖项的最新版本。

如果您已经安装了最新版本的 Ruby 以及基本的 RubyGems 和扩展,只需在命令提示符下运行以下命令即可在您的系统上安装 Rails: gem install rails.

您还需要安装 Node.js 如果你还没有安装,因为 Rails 依赖的一些库需要它。 Java脚本运行时要正常工作。获取节点 https://nodejs.org.

一种更常见和更受青睐的方法 Windows 是使用 Windows Linux 子系统。它提供了一个 GNU/Linux 环境,其中包含命令行工具、实用程序和常用应用程序。 Windows.

在 Mac 上安装 Ruby

您的 Mac 电脑已预装 Ruby。但是,预装版本通常已过时,因此您应该安装一个更新的版本。

最简单的方法是使用包管理器,例如 家酿您可能需要先在终端中运行以下命令来安装 Homebrew。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

这将显示一条警告并提示您输入密码。请输入您的 Mac 密码(输入时字符不会显示),完成后按 Enter 键。然后运行此 Homebrew 命令在您的 Mac 上安装 Ruby。

brew install ruby

然后运行以下命令:

echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile

这将把新安装的 Ruby 版本设置为系统上的默认 Ruby 版本,而不是预装的 Ruby 版本。

要确认安装是否成功,请在终端中运行以下命令:

ruby --version

此命令会打印出您已安装的 Ruby 版本号。输出结果类似于:

ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]

安装 Ruby Ubuntu (Linux)的

在……上安装 Ruby 的最简单方法 Ubuntu 是通过 apt 包管理器安装的。在终端中运行以下命令,即可安装最新版本的 Ruby。 Ubuntu 仓库。

  • sudo apt update 这会更新默认设置。 Ubuntu 仓库。
  • sudo apt install ruby​​-full – 此操作会下载并安装最新版本的 Ruby。

要确认安装,请运行 ruby-版本这段代码会打印出你已安装的 Ruby 版本。

安装 Rails Ubuntu (Linux)的

请按照以下步骤在您的 Linux 机器上安装 Rails。

步骤1) 通过运行以下命令更新您的 Gem 管理器 gem 更新 -system 在终端或命令提示符中。

步骤2) 运行 宝石安装导轨 在您的计算机上安装最新版本的 Rails。

步骤3) 安装 bundler gem,以便轻松管理 Rails 应用程序的 gem 依赖项。运行 宝石安装捆绑器.

铁路的两大原则

Rails遵循基本的软件设计原则,并鼓励你也使用这些原则。

最常见的两种是:

  • 不要重复自己(干) ——这样就能编写出简洁、一致且易于维护的代码。
  • 约定优于配置 Rails 预配置了合理的默认设置,足以满足大多数常见使用场景。这不仅加快了应用程序开发速度,也减少了需要维护的代码量。

Rails – 项目文件结构

确保系统已安装 Rails,然后创建一个 Rails 应用程序。接下来的章节将通过构建一个待办事项列表应用程序,逐步讲解 Ruby on Rails 的示例。在终端中运行以下命令来创建应用程序:

rails new todo_app

此命令创建一个名为 待办事项应用 当前目录包含 Rails Web 应用程序的基本文件夹结构,如下所示。

Rails – 项目文件结构

以下是项目生成的主要目录:

应用 – 将 UI/布局(视图和助手)、控制器(控制器文件)和模型(业务/应用程序逻辑)的子目录分组。

应用程序/控制器 – 存储 Rails 用于处理来自客户端的请求的控制器文件。

应用程序/资产 – 包含应用程序前端所需的静态文件,按类型分组: JavaScript 文件、图像和样式表。

应用程序/助手 – 包含辅助函数,可使您的应用程序模型、视图和控制器逻辑保持专注、简洁和清晰。

应用/模型 – 包含用于对应用程序数据库进行建模的文件。这些模型类使数据库操作变得非常容易。

应用程序/浏览量 – 存放应用程序用户与之交互的模板/布局文件。这些模板将 HTML 与数据库中的数据相结合。

箱子 – 包含启动应用程序的 Rails 脚本。它还可以包含用于设置和升级应用程序的其他脚本。

配置 – 存放配置文件,例如 数据库.yml、环境.rb、路线.rb等等,你的应用程序运行所需的一切。

db – 包含用于管理应用程序数据库的文件和脚本。

LIB – 包含应用程序的扩展模块。

日志 – 包含日志文件,例如 server.log、development.log、test.log 和 production.log用于调试或监控您的应用程序。

国家 – 包含静态文件和已编译的资源,例如 HTML 文件, Java脚本文件、图像和样式表。

实验 – 包含您编写的用于测试应用程序功能的测试文件。

TMP – 包含临时文件,例如缓存文件和 pid 文件。

供应商 – 包含第三方库。

文件 – 指定运行 Web 应用程序所需的基本 gem 要求。您可以将 gem 分组到开发、测试或生产环境中,Rails 会知道何时引入哪个 gem。

Gemfile.lock 与明确列出应用程序中所需 gem 的 Gemfile 不同,Gemfile.lock 还包含 Gemfile 中列出的 gem 所依赖的其他 gem。这些 gem 会自动安装以满足依赖关系。

自述文件 – 使用此文件分享有关您的应用程序的重要细节,例如应用程序的功能以及如何安装和运行它。

文件 – 包含各种 rake 任务定义,可帮助自动化应用程序的日常管理任务。

config.ru – 一个 Rack 配置文件,它为 Web 服务器提供接口以启动您的应用程序。

切换到该目录 待办事项应用 目录 Rails 生成并运行 rails服务器 启动应用程序。输入 本地主机:3000 在浏览器地址栏中输入。如果一切顺利,您应该会看到以下屏幕。

Rails – 项目文件结构

这是应用程序的默认主页。您将在本 Ruby on Rails 教程的后续章节中更改它。您可以按 Ctrl+C 停止服务器。 按Ctrl + C.

Rails – 生成命令

Rails 的 generate 命令使用模板在应用程序中创建许多有用的元素。这些生成器可以节省大量时间。

它们会编写必要的样板代码,以确保您的 Web 应用程序正常运行。运行 rails 生成 在命令提示符或终端中单独输入即可查看可用生成器的列表,如下所示。

Rails – 生成命令

你也可以跑 rails 生成 要查看命令的详细说明,其中列出了便捷的选项和使用示例。下图显示了运行该命令的输出结果。 rails 生成控制器.

Rails – 生成命令

使用 `rails generate scaffold` 命令自动创建待办事项列表应用程序的模型、视图和控制器。在终端中运行以下命令(确保您仍在 `rails` 目录中)。 待办事项应用 目录):

rails generate scaffold todo_list title:string description:text

这将为待办事项列表表创建一个完整的 CRUD(创建、读取、更新、删除)Web 界面。

另一个有用的命令是 铁轨损毁它会逆转任何情况。 rails 生成 一样。

Rails – 路由

Rails路由系统,也称为Rails路由器,负责处理所有传入Web应用程序的请求。它会检查…… URL 对每个请求进行映射,并将其映射到负责处理该请求的控制器操作,使用路由文件中指定的语法(配置/路线.rb).

路由文件控制着一切 URL 这是您 Web 应用程序的一个方面。Rails 使用基于 REST 架构风格的 RESTful 设计,它提供了一个映射。ping HTTP动词和请求之间的区别 URLs 到控制器操作。

路线文件是在您运行时生成的 新的铁路 之前。继续构建待办事项应用程序,运行以下命令:

rails db:migrate

请确保您仍在应用程序的根目录(即 待办事项应用 目录)。

重新启动服务器 rails服务器。 类型 http://localhost:3000/todo_lists/ 在浏览器中打开并按回车键。你应该会看到类似下面的网页。

Rails – 路由

这是由 scaffold 命令生成的待办事项列表视图,它由 TodoListsController 控制。 指数 行动。

点击页面上的“新建待办事项列表”即可添加待办事项列表。您应该会看到如下屏幕。

Rails – 路由

请注意 URL 现在 http://localhost:3000/todo_lists/new这是创建新待办事项列表的页面,它由 TodoListsController 控制。 方法。

在表单中输入待办事项列表的标题和描述,然后点击“创建待办事项列表”。 URL 应该改为 http://localhost:3000/todo_lists/1, 如下所示。

Rails – 路由

这是待办事项列表的显示页面,由 TodoListsController 控制。 显示 方法。如果你回到 http://localhost:3000/todo_lists/现在你应该能看到如下所示的屏幕,其中添加了新的待办事项列表。

Rails – 路由

Rails 能够使用路由定义将每个请求映射到相应的 TodoListsController 操作。 配置/路线.rb.

如果你查看这个文件,你会看到一行字。 资源:待办事项列表这是 Rails 编写 RESTful 路由的默认方式。这一行代码创建了七条路由,全部都是映射路由。ping 发送到 TodoLists 控制器。

按照惯例,每个控制器操作都映射到数据库中的特定 CRUD(创建、读取、更新、删除)操作。

运行 铁路路线 在命令行中输入命令,即可查看应用程序中可用的各种路由。下图显示了运行该命令的输出结果。 铁路路线.

Rails – 路由

Rails – 视图

视图层是 MVC 架构的组成部分之一,负责为应用程序的每个请求生成 HTML 响应。Rails 默认使用 ERB(嵌入式 Ruby),这是一个功能强大的 Ruby 模板系统。

ERB 通过将纯文本与 Ruby 代码相结合,实现了变量替换和流程控制,使模板的编写和维护变得轻松便捷。ERB 模板使用 .html.erb 延期。

您主要会使用两个标签标记,每个标记都会导致嵌入代码以特定的方式进行处理。

带有等号的标签 <%= %> 表示嵌入的代码是一个表达式,该表达式的结果应该在模板渲染时替换到输出中。

另一个没有等号的标签 <%%> 指示渲染器不要将代码的结果替换或打印到输出中。

Rails 应用程序中的每个控制器在 应用程序/浏览量控制器中的每个操作都有一个对应的 .html.erb 该子目录中的文件。

应用程序/浏览量 在您正在构建的待办事项应用程序中,您会找到一个名为“Todo”的子目录。 待办事项清单.html.erb 文件名称与操作相对应 待办事项列表 控制器。

Rails – ActiveRecord、Active Record 模式和 ORM

ActiveRecord 是 Ruby 对 Active Record 模式的实现。在该模式中,一个类代表一个数据库表,而该类的一个实例代表该表中的一行数据。

ActiveRecord 通常被称为 ORM(对象关系映射)。ping数据库层(或称数据库管理层)是一种允许您使用最熟悉的语言来管理数据库的技术。它与数据库无关,因此您可以轻松地在不同数据库之间切换——例如, SQLite, MySQL, PostgreSQLSQL Server 或 Oracle — 使用相同的代码和逻辑。

例如,要获取应用程序中包含所有待办事项列表的数组,您无需编写打开连接、运行 SQL SELECT 查询并转换结果的代码。

你只需输入 待办事项列表.全部ActiveRecord 返回一个填充了 TodoList 对象的数组,您可以随意使用。

您只需在以下位置进行配置即可: config / database.ymlActiveRecord 可以处理数据库系统之间的差异。当您从一个数据库切换到另一个数据库时,无需重写代码。

您专注于应用程序逻辑,ActiveRecord 会处理连接数据库的底层细节。它使用命名约定将模型映射到数据库表。

Rails 会将模型类名复数化,以便找到对应的数据库表。因此,对于一个类 待办事项列表ActiveRecord 使用一个名为“ 待办事项清单.

Rails – 迁移

Rails迁移脚本是一种用于演进应用程序数据库的脚本。它用于设置或更改数据库,而无需手动编写SQL语句。

它使用 Ruby 来定义数据库模式的更改,并允许使用版本控制来保持数据库在不同环境之间的同步。

Rails 迁移使用 Ruby 领域特定语言 (DSL)。这充当绝对值。trac允许您根据自身需求使用或更改数据库引擎。

迁移可以与应用程序的任何开发人员共享,也可以回滚以撤销更改。这是一种强大的安全机制,因此您无需担心对数据库造成永久性损坏。

Rails – ActiveRecord 关联

两个 ActiveRecord 模型之间的连接称为关联。关联使得在代码中对相关记录执行操作变得更加容易。关联通常分为四类。

一对一: 一条记录包含另一个模型的唯一实例。一个很好的例子是用户个人资料——一个用户只有一个个人资料。它使用 has_one 关键词。

一对多: 最常见的关联方式——一个模型可以包含零个或多个另一个模型的实例。使用 has_many 关键字来表示这种关联。

多对多: 稍微复杂一些。ActiveRecord 提供了两种处理方式: 具有并属于多个has_many:通过这样,您就可以访问在单独的表中定义的连接模型。

多态一对多: Rails 中更高级的关联。它定义了一个模型,该模型可以通过单个关联属于多个不同的模型。

Rails – ActiveRecord 验证

验证有助于确保您拥有正确的数据,因为使用错误数据是有风险的,可能会给您的企业造成经济损失。

验证还能提供额外的安全保障,防止恶意用户试图将有害数据插入数据库。Rails 在 ActiveRecord 中提供了一套简洁的验证辅助 API,确保数据库干净、安全且无错误。

ActiveRecord 验证在保存到数据库之前对模型对象运行,这使得它们更加可靠,并符合最佳实践。

以下ActiveRecord方法在对模型对象调用时会触发验证: 创建,创建!,保存,保存!,更新,更新!. 爆炸版本(创建!保存!更新!如果记录无效,则引发异常,而非感叹号版本则返回 false。

最常用的 ActiveRecord 验证辅助函数有:

  • 确认: 验证两个字段的值是否相同,例如密码和密码确认。它与存在性验证辅助函数一起使用。
  • 存在: 检查该字段是否为空。
  • 唯一性: 确保字段值唯一,例如用户名。
  • 长度: 对字段的字符长度进行限制。

您还可以使用以下方式创建自己的自定义验证: 验证 方法并向其传递自定义验证方法的名称。

检查一下型号的 错误 对象用于查找验证失败的原因。这为您提供了使应用程序更加严格和安全所需的一切,确保只允许有效数据进入数据库。

Rails – ActionController

Rails 控制器是 Web 应用程序的中心。它促进并协调用户、模型和视图之间的通信。

你的控制器类继承自 应用程序控制器其中包含可在所有其他控制器中运行的代码,并且该控制器又继承自 ActionController::Base.

控制器为你的应用程序提供以下内容:

  • 它将外部请求路由到内部操作。
  • 它可以管理缓存,从而提升应用程序的性能。
  • 它管理扩展视图模板功能的辅助方法,并管理用户会话,从而为用户提供流畅的体验。

Rails – 配置

您可以使用 Rails 应用程序初始化器和配置文件来配置初始化器、资源、生成器和中间件等组件。 配置 目录。类似文件 config/application.rb, config/environments/development.rbconfig/environments/test.rb 这里使用了这些设置。您还可以为您的应用程序添加自定义设置。

Rails – 调试

在构建应用程序的过程中,您需要调试代码。Rails 让这一切变得轻松简单。 byebug gem。您可以通过输入关键字来启动调试会话。 byebug 应用程序代码中的任何位置。

这将暂时中止执行。byebug gem 提供了多个命令。其中最常用的命令有:

  • 下一个: 移动到下一行代码,跳过ping 当前行调用的所有方法。
  • 步:下页但是,它会进入每个被调用的方法。
  • 休息: 停止代码执行。
  • 继续: 继续执行代码。

还有其他调试工具可用,例如 它们的功能大同小异,只是语法略有不同。调试 gem 不应该在生产环境中使用,因为它们会给应用程序带来风险,并给用户造成糟糕的体验。

可以检查生产环境中的日志文件以发现错误并进行相应处理。此外,在构建应用程序时,应遵循测试驱动开发 (TDD) 方法,以确保在部署到生产环境之前一切运行正常。

常见问题

是的。Rails 仍然是 GitHub、Shopify 和 Basecamp 等平台的底层框架,并且 7 版本新增了 Hotwire、地图导入和内置 Trix 编辑器支持。对于需要快速迭代且遵循久经考验的规范的团队来说,它仍然是一个强有力的选择。

Rails 使用 Ruby, Django的 使用 Python两者都是带有强大 ORM 的全栈 MVC 框架。Rails 依赖于约定和代码生成器,而 Django 则提供了一个管理界面和更严格的显式配置,许多团队在处理数据密集型项目时更倾向于后者。

常见部署路径包括 HerokuRender、Fly.io 和 AWS 可以通过 Capistrano 或 Docker 进行部署。大多数团队会使用 `rake assets:precompile` 预编译资源,设置 `RAILS_ENV=production`,运行 `rails db:migrate`,然后将应用程序部署在 Puma 和 Nginx 或托管负载均衡器之后。

是的。AI 助手可以搭建模型、建议 ActiveRecord 查询、编写 RSpec 测试以及审查迁移。提交代码之前,务必对照 Rails 规范和安全指南审查生成的代码,尤其是在进行身份验证和数据库更改时。

Rails 应用通常通过 Ruby SDK 或 Faraday 等 HTTP 客户端调用 AI 提供商,将提示和响应存储在 ActiveRecord 模型中,并使用 Sidekiq 对耗时任务进行排队。ruby-openai 和 langchainrb 等 gem 让集成现代 AI 功能变得简单易行。

总结一下这篇文章: