Ruby on Rails 初学者教程(附项目和示例)

什么是红宝石?

红宝石 是一种高级、解释型和面向对象的编程语言。它是一种动态开源语言,背后有一个强大的社区。Ruby 的设计理念是简单和高效。它鼓励编写软件代码时,首先考虑人,其次考虑计算机。它由日本的 Yukihiro Matsumoto 于 1995 年创建。

什么是 Rails?

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

它由 David Heinemeier Hasson 创建,通常被称为 DHH。它是构建 Web 应用程序最具影响力和最受欢迎的工具之一。它被一些最受欢迎的网站使用,例如 Airbnb、 Github、Shopify 等等

为什么选择 Rails?

以下是使用 Rails 的优点/好处:

  • Rails 被打包为 Ruby gem,您可以使用它来构建各种应用程序。
  • 它允许您构建常规的 Web 应用程序、电子商务应用程序、内容管理系统等。
  • Rails 是一个全栈框架,它包含使用模型-视图-控制器模式创建数据库驱动的 Web 应用程序所需的一切。
  • 这意味着所有层都可以无缝协作,代码量更少。它所需的代码行数比其他框架要少。

如何在 Windows

安装过程取决于您的操作系统。您将在 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 所依赖的一些库需要 Javascript 运行时才能正常工作。您可以在以下位置获取节点 https://nodejs.org.

这是开发的一种更常见且更受欢迎的方法 Windows. Rails 社区使用 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)的

在你的 Ubuntu 系统是通过 apt 包管理器安装的。您需要在终端运行以下命令来安装最新的 Ruby Ubuntu 仓库。

  • sudo apt 更新 – 这将更新默认 Ubuntu 资料库
  • sudo apt 安装 ruby​​-full – 它将下载并安装最新的 Ruby

要确认安装成功,您可以运行以下命令 ‘ruby –版本’ 这将打印您已安装的 Ruby 版本。

安装 Rails Ubuntu (Linux)的

您应该按照以下步骤在您的 Linux 机器上成功安装 Rails。

步骤1) 通过运行来更新你的计算机 gem 管理器 ‘宝石更新-系统’ 在终端或命令提示符下。

步骤2) 运行 ‘gem 安装 rails’ 在您的计算机上安装最新版本的 Rails。

步骤3) 您应该安装 bundler gem,以便轻松管理 Rails 应用程序 gem 依赖项。运行 ‘gem 安装捆绑软件’ 为拿到它,为实现它。

Rails 的两个原则

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

最常见的两种是:

  • 不要重复自己(DRY)——这使您能够编写简洁、一致且可维护的代码。
  • 约定优于配置 – Rails 已预先配置为使用符合最常见用法的合理默认值。这可加快您的应用程序开发速度,并且您无需维护太多代码。

Rails – 项目文件结构

现在 Rails 已安装在您的系统上,让我们创建一个 Rails 应用程序!我们将在本 Ruby on Rails 教程中学习 Ruby on Rails 示例以及如何创建 Todo 列表应用程序。运行以下命令 ‘rails new todo_app’ 在您的终端中创建应用程序。

此命令创建一个名为 ‘todo_app’ 在当前目录中具有Rails Web应用程序的基本文件夹结构,如下图所示:

Rails – 项目文件结构

您将浏览此 Ruby on Rails 示例中的主要目录。

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

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

应用程序/资产 – 它包含静态文件,这是应用程序前端需要根据其类型分组到文件夹中 – JavaScript 文件、图像和样式表。

应用程序/助手 – 此子目录包含辅助函数,可使您的应用程序模型、视图和控制器逻辑集中、小巧且整洁。

应用程序/模型 – 这包含文件

为应用程序的数据库建模。模型类使得数据库操作变得非常简单。

应用程序/视图 – 它保存应用程序用户与之交互的模板/布局文件。模板是 HTML 和数据库中数据的组合。

垃圾桶 - 它包含启动应用程序的 Rails 脚本。它还可以包含用于设置和升级应用程序的其他脚本。

配置—— 这保存着配置文件 – 数据库.yml、环境.rb、路线.rb等您的应用程序运行所需的。

D B - 该目录包含用于管理应用程序数据库的文件/脚本。

自由 – 该目录包含您的应用程序的扩展模块。

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

上市 - 此目录包含静态文件和已编译的资产,例如 HTML 文件, Javascript 文件、图像和样式表。

测试– 该目录包含您编写的用于测试应用程序功能的测试文件。

tmp – 该目录包含临时文件,如缓存和 pid 文件。

小贩 - 该目录包含第三方库。

Gemfile – 此文件指定了运行 Web 应用程序的基本 gem 要求。您可以将 gem 分组为开发、测试或生产,Rails 会知道何时包含每个 gem。

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

Readme.md – 您可以使用此文件来分享有关应用程序的基本详细信息,例如应用程序的功能、如何安装和运行该应用程序。

Rakefile – 该文件包含各种 rake 任务定义,有助于自动执行应用程序的日常管理任务。

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

将目录更改为 ‘todo_app’ 目录 Rails 生成并运行 ‘轨道服务器’ 启动应用程序。输入 本地主机:3000 在您的网络浏览器的地址栏中,如果一切顺利,您应该会看到下面的图。

Rails – 项目文件结构

这是应用程序的默认主页,您将在本 Ruby on Rails 教程的后面部分中更改它。您可以按以下方式停止服务器: 'Ctrl-C'.

Rails – 生成命令

Rails generate 命令利用模板在应用程序中创建大量有用的东西。您可以使用这些生成器节省大量时间。

它有助于编写样板代码,即您的 Web 应用程序正常运行所必需的代码。您可以运行 ‘轨道生成’ 在命令提示符或终端上单独查看可用的生成器列表,如下所示:

Rails – 生成命令

你也可以跑 'rails 生成“命令”' 查看命令的描述。它提供了可以与命令一起运行的便捷选项和使用示例。下图显示了运行的输出'轨道生成控制器':

Rails – 生成命令

您将使用 rails generate scaffold 命令自动为您正在构建的待办事项列表应用程序创建模型、视图和控制器。运行' rails 生成脚手架 todo_list 标题:字符串描述:文本' 在您的终端中(检查您是否仍在 todo_app 目录中)。

这将为 TodoLists 表创建一个完整的 CRUD(创建、读取、更新和删除)Web 界面。

另一个有用的命令是 “铁轨毁坏” 它逆转了一切 “轨道生成…” 一样。

Rails – 路由

Rails 路由系统 rails router 处理所有传入到 Web 应用程序的请求。它通过检查传入请求的 URL 来实现这一点,然后使用 routes 文件中指定的特殊语法将每个请求映射到负责处理它的控制器操作 (配置/路线.rb).

路由文件有助于控制 Web 应用程序的每个 URL 方面。默认情况下,Rails 使用基于 REST 架构风格的 RESTful 设计,该设计提供 HTTP 动词和请求(URL)与控制器操作之间的映射。

路线文件是在您运行时生成的 'rails new' 在本教程的前面部分中。继续构建 Todo 应用程序,运行以下命令“rails db:迁移” (你很快就会知道它的作用)

在命令行中,确保您仍位于应用程序的根目录(todo_app 目录)。

然后使用以下命令重新启动服务器 ‘轨道服务器’。 类型 http://localhost:3000/todo_lists/ 在浏览器中输入并按 Enter。您将看到一个网页,如下图所示的 Ruby on Rails 示例:

Rails – 路由

这是 scaffold 命令生成的 Todo 列表视图,它由 TodoListsController 的索引操作控制。

继续并通过单击页面上的“新建待办事项列表”来添加待办事项列表,您将获得如下所示的页面:

Rails – 路由

注意 URL 已更改为 http://localhost:3000/todo_lists/new。这是创建新待办事项列表的页面,由 TodoListsController 的新方法/操作控制。

在表单中输入待办事项列表标题和说明,然后单击“创建待办事项列表”按钮,URL 应更改为 http://localhost:3000/todo_lists/1,如下图Ruby on Rails代码示例所示:

Rails – 路由

这是待办事项列表的显示页面,由 TodoListsController 的 show 方法/操作控制。如果您返回 http://localhost:3000/todo_lists/,您现在应该看到下图中添加了一个新的待办事项列表:

Rails – 路由

Rails 能够使用 config/routes.rb 中的路由定义将各种请求(URL)映射到相应的 TodoListsController 的操作。

如果你看一下这个文件,你会看到一行 ‘资源:todo_lists’,是 Rails 编写 restful 路由的默认方式。这一行创建了七条路由,全部映射到 TodoLists 控制器。

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

你可以跑 ‘耙路’ 在命令行中查看应用程序中可用的各种路由。下图显示了运行 “铁路路线” 在您的命令行/终端中。

Rails – 路由

Rails – 视图

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

ERB 通过将纯文本与 Ruby 代码相结合来进行变量替换和流程控制,使模板编写变得简单且易于维护。ERB 模板具有 .html、.erb 或 .erb 扩展名。

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

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

另一个没有等号的标签 '<% %>' 向渲染器指示在渲染模板时不应替换/打印代码的结果。

Rails 应用程序中的每个控制器在 应用程序/浏览量,并且控制器中的每个动作/方法在此目录下都有对应的.html和.erb文件。

查看你正在构建的 todo 应用的 app/views。你将找到一个名为 ‘待办事项列表’ 在此子目录中 .html.erb 文件名与操作/方法相对应 待办事项列表 控制器。

Rails – ActiveRecord、Active Record 模式和 ORM

ActiveRecord 是 Active Record 模式的 Ruby 实现,这是一种简单的模式,其中一个类代表一个表,而该类的一个实例代表该类中的一行。

ActiveRecord 通常被称为 ORM(对象关系映射),这是一种允许您使用最熟悉的语言管理数据库的技术。它与数据库无关,因此您可以轻松地在数据库之间切换(例如 SQLite, MySQL, PostgreSQL, SQL Server, Oracle等)。该套件更适合您具有相同代码/逻辑的应用程序需求。

因此,如果您想获取一个包含应用程序中所有待办事项列表的数组,那么,您无需编写代码来启动与数据库的连接,而是执行某种 SQL SELECT 查询,并将这些结果转换为数组。

为此,你只需输入“TodoList.all” Active Record 为您提供了填充了 TodoList 对象的数组,您可以随意使用它。

您需要做的就是在 config / database.yml,而 Active Record 将解决各种数据库系统之间的所有差异。因此,当您从一个数据库系统切换到另一个数据库系统时,您无需考虑这一点。

您专注于为应用程序编写代码,Active Record 将考虑将您连接到数据库的低级细节。Active Record 使用命名约定来创建模型和数据库表之间的映射。

Rails 将模型类名变为复数,以查找相应的数据库表。因此,对于 TodoList 类,ActiveRecord 将创建一个名为 TodoLists 的数据库表。

Rails – 迁移

Rails 迁移只是一个用于编辑应用程序数据库的脚本。它用于设置或更改数据库,避免手动编写 SQL 代码来执行此操作。

它使用 Ruby 来定义数据库模式的更改,并可以使用版本控制来保持数据库同步。

Rails Migrations 使用 Ruby 领域特定语言 (DSL)。这充当了一种抽象,使您可以根据需要使用或更改数据库引擎。

它们可以与任何使用该应用程序的人共享,也可以回滚以撤消对数据库的任何更改。这是一种高度安全的机制,因为您不必担心对数据库造成永久性损坏。

Rails – ActiveRecord 关联

两个 ActiveRecord 模型之间的连接称为关联。关联使对代码中不同记录执行操作变得更加容易。它可以分为四类:

一对一: – 这表示一条记录恰好包含另一个模型的一个实例。一个很好的例子是用户个人资料。一个用户只有一个个人资料。它使用 有 _one 关键词。

一对多: – 这是最常见的关联,它表示一个模型有另一个模型的零个或多个实例。你的使用 有 _many 关键字来表示这种关联。

多对多: – 这种关联稍微复杂一些,ActiveRecord 提供了两种方法来处理它。使用 具有并属于多个有很多, 它使您可以访问单独表中定义的关系。

多态一对多:- 这是 Rails 中提供的更高级的关联。您可以使用它来定义一个模型,该模型可能属于单个关联中的许多不同模型。

Rails – ActiveRecord 验证

验证有助于确保您拥有正确的数据,因为使用错误的数据是一件可怕的事情,可能会使您损失金钱和生意。

验证还为您的应用程序提供了额外的安全层,防止恶意用户访问数据库中的信息。Rails 为您提供了 ActiveRecord 中验证助手的良好 API,以保持数据库清洁、安全且无错误。

ActiveRecord 验证在保存到数据库之前对模型对象运行,这使得它们更加可靠,并且也是构建应用程序时遵循的最佳实践。

以下 ActiveRecord 方法在模型对象上使用或调用时会引发验证 - 创建,创建!,保存,保存!,更新,更新!. 轰动一时的产品(创建!保存!然后更新!) 如果记录无效,则会引发异常。

您可以使用的最常见的 ActiveRecord 验证助手是:-

确认:– 此验证助手对于验证两个字段是否具有相同的条目很有用。例如,密码和密码确认,它与存在验证助手一起使用。

存在:– 这将检查该字段是否为空。

唯一性:确保字段的唯一值,例如用户名

长度:- 强制限制字段的字符长度

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

您可以检查模型的 错误 对象来找出验证的原因。希望您有一些想法,可以让您的应用程序更加受约束和更安全,只允许安全数据进入您的数据库。

Rails – ActionController

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

您的控制器类继承自 ApplicationController,它包含可以在所有其他控制器中运行的代码,并且它继承自 ActionController 类。

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

  • 它将外部请求路由到内部操作
  • 它管理缓存,从而提高应用程序的性能
  • 它管理扩展视图模板功能的辅助方法。它还管理用户会话,让他们能够流畅地使用您的应用。

Rails – 配置

您可以使用 config 目录中的 Rails 应用程序初始化程序和配置文件来配置各种组件,例如初始化程序、资产、生成器、中间件等。文件包括 config/application.rb、config/environments/development.rb 和 config/environments/test.rb 等。您还可以为您的应用程序配置自定义设置。

Rails – 调试

在构建应用程序时,总有一天您需要/必须调试代码。Rails 使用 byebug gem 使此操作变得简单。您可以通过在应用程序代码中的任何位置放置“byebeg”关键字来启动调试会话。

这将在该点暂时停止执行。byebug gem 为您提供了几个命令。最有用的是:

  • 下页:命令使您能够转到下一行代码,跳过当前行执行所调用的所有方法。
  • :这类似于“next”命令,但会让您进入每个调用。
  • 打破:这将停止代码执行。
  • 继续 继续执行代码。

还有其他可用的调试工具,例如“pry”,它们都提供类似的功能,但语法略有不同。调试工具不应在生产中使用,因为这会给您的应用程序带来风险,并给您的应用程序用户带来糟糕的体验。

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

总结

  • Ruby 是一种纯面向对象的编程语言
  • Ruby 具有优雅的语法,易于阅读和编写。
  • Rails 是一个用 Ruby 编写的开发框架,用于构建 Web 应用程序
  • 安装过程取决于您的操作系统。
  • Rails 被打包为 Ruby gem,您可以使用它来构建各种应用程序。
  • 您将在本教程中创建一个待办事项列表应用程序,在您的终端中运行以下命令“rails netoda”来创建该应用程序。
  • Rails 生成命令利用模板在您的应用程序中创建大量有用的东西。
  • Rails 路由系统、rails 路由器可帮助您处理 Web 应用程序的所有传入请求。
  • 视图层是 MVC 范式的组件之一,负责为应用程序的每个请求生成 HTML 响应。
  • ActiveRecord 是 Active Record 模式的 Ruby 实现。
  • Rails 迁移只是一个用来编辑应用程序数据库的脚本。
  • 两个 ActiveRecord 模型之间的连接称为关联。
  • 验证有助于确保您拥有正确的数据,因为使用错误的数据是一件可怕的事情,可能会使您损失金钱和生意。
  • Rails 控制器帮助您促进和协调用户、模型和视图之间的通信。
  • Rail 帮助您配置各种组件,例如初始化程序、资产、生成器、中间件等。