Ruby on Rails 教程:从零开始构建你的第一个 Web 应用 – wiki大全

Ruby on Rails 教程:从零开始构建你的第一个 Web 应用

前言

欢迎来到 Ruby on Rails 的世界!Rails 是一个使用 Ruby 语言编写的开源 Web 应用框架。它遵循“约定优于配置”(Convention over Configuration)和“不要重复自己”(Don’t Repeat Yourself)的设计哲学,旨在让 Web 开发变得更加轻松、高效和有趣。

自 2004 年发布以来,Rails 凭借其强大的功能和优雅的设计,迅速成为 Web 开发领域的宠儿。许多知名的网站,如 GitHub, Airbnb, Shopify, 和 Basecamp,都是使用 Rails 构建的。即使在今天,Rails 依然是一个成熟、稳定且充满活力的框架,拥有庞大的社区和丰富的生态系统,非常适合初创公司和大型企业快速构建高质量的 Web 应用。

在本教程中,我们将从零开始,一步步构建一个功能齐全的博客应用。你将学习到 Rails 的核心概念,包括 MVC 架构、RESTful 设计、数据库迁移、路由、视图模板等。

学习本教程需要你具备以下基础知识:

  • 了解 HTML, CSS 和 JavaScript 的基本语法。
  • 对命令行操作有基本了解。
  • 有其他编程语言的经验会很有帮助,但并非必需。

准备好了吗?让我们开始 Rails 之旅吧!

第一部分:搭建开发环境

在开始编写代码之前,我们需要先在本地搭建好 Rails 的开发环境。

1. 安装 Ruby

Rails 是基于 Ruby 的,所以我们首先需要安装 Ruby。我们推荐使用版本管理工具来安装和管理 Ruby,这样可以方便地在不同版本的 Ruby 之间切换。

  • macOS 或 Linux 用户 可以使用 rbenvRVM
  • Windows 用户 可以使用 RailsInstallerWSL (Windows Subsystem for Linux) 来搭建一个类 Linux 的开发环境。

rbenv 为例,你可以按照以下步骤安装 Ruby:

“`bash

安装 rbenv

brew install rbenv ruby-build

初始化 rbenv

rbenv init

安装指定版本的 Ruby (推荐使用最新稳定版)

rbenv install 3.2.2
rbenv global 3.2.2
“`

安装完成后,可以通过以下命令验证 Ruby 是否安装成功:

“`bash
ruby -v

ruby 3.2.2p53 (2023-04-12 revision e51014f9c0) [x86_64-darwin22]

“`

2. 安装 Rails

安装好 Ruby 之后,我们就可以使用 RubyGems(Ruby 的包管理器)来安装 Rails 了。

bash
gem install rails

安装完成后,可以通过以下命令验证 Rails 是否安装成功:

“`bash
rails -v

Rails 7.1.3

“`

3. 安装数据库

Rails 支持多种数据库,包括 SQLite, PostgreSQL, MySQL 等。对于开发环境,我们推荐使用 SQLite,因为它配置简单,无需单独安装和配置数据库服务器。在生产环境中,则更推荐使用功能更强大的 PostgreSQL 或 MySQL。

第二部分:创建你的第一个 Rails 应用

1. 创建新项目

现在我们已经搭建好了开发环境,可以开始创建我们的第一个 Rails 应用了。打开终端,进入你想要存放项目的目录,然后运行以下命令:

bash
rails new blog

这个命令会创建一个名为 blog 的新目录,并在其中生成一个完整的 Rails 应用骨架。

2. 项目目录结构

让我们来看一下 rails new 命令为我们生成的项目目录结构:

  • app/: 包含应用的核心代码,如模型(models)、视图(views)、控制器(controllers)、帮助方法(helpers)和静态资源(assets)。
  • bin/: 包含应用的启动脚本,如 rails, rake, bundle
  • config/: 包含应用的配置文件,如数据库配置(database.yml)、路由配置(routes.rb)等。
  • db/: 包含数据库相关的文件,如数据库迁移(migrations)和数据填充(seeds)。
  • Gemfile: 定义了项目所依赖的 Ruby gems。
  • Gemfile.lock: 记录了项目实际使用的 gems 及其版本。
  • log/: 包含应用的日志文件。
  • public/: 包含静态文件,如错误页面。
  • storage/: 包含 Active Storage 上传的文件。
  • test/: 包含应用的测试代码。
  • tmp/: 包含临时文件。
  • vendor/: 包含第三方的代码。

3. 启动服务器

进入项目目录,然后启动 Rails 服务器:

bash
cd blog
bin/rails server

现在,打开浏览器,访问 http://localhost:3000,你应该能看到 Rails 的欢迎页面。

第三部分:构建博客文章功能

1. MVC 架构简介

Rails 遵循经典的 MVC(Model-View-Controller)架构模式:

  • Model (模型): 负责与数据库进行交互,处理应用的业务逻辑。
  • View (视图): 负责生成用户界面,将数据显示给用户。
  • Controller (控制器): 负责接收用户的请求,调用模型和视图,并向用户返回响应。

2. 使用脚手架快速生成代码

Rails 提供了强大的脚手架(scaffold)功能,可以帮助我们快速生成一套完整的 CRUD (Create, Read, Update, Delete) 功能。

运行以下命令,生成 Post 模型、控制器和视图:

bash
bin/rails generate scaffold Post title:string body:text

这个命令会生成以下主要文件:

  • db/migrate/YYYYMMDDHHMMSS_create_posts.rb: 数据库迁移文件,用于创建 posts 表。
  • app/models/post.rb: Post 模型文件。
  • app/controllers/posts_controller.rb: Posts 控制器文件。
  • app/views/posts/: 包含 Post 相关的视图文件。
  • config/routes.rb: 在路由文件中添加了 resources :posts

3. 运行数据库迁移

运行以下命令,执行数据库迁移,创建 posts 表:

bash
bin/rails db:migrate

4. 体验博客功能

现在,重启 Rails 服务器,然后在浏览器中访问 http://localhost:3000/posts,你将看到一个功能齐全的博客文章管理界面。你可以尝试新建、查看、编辑和删除文章。

第四部分:深入理解 Rails

脚手架为我们生成了很多代码,现在让我们来深入了解一下这些代码的含义。

1. 路由

打开 config/routes.rb 文件,你会看到一行 resources :posts。这行代码会自动为我们生成一组符合 RESTful 规范的路由,用于处理对文章资源的各种操作。

你可以在终端运行 bin/rails routes 命令,查看所有可用的路由。

2. 控制器

打开 app/controllers/posts_controller.rb 文件,你会看到一个 PostsController 类,其中包含了一系列的方法,如 index, show, new, create, edit, update, destroy。这些方法被称为 action,分别对应着对文章资源的不同操作。

3. 模型

打开 app/models/post.rb 文件,你会看到一个空的 Post 类。我们可以在这里添加数据验证、关联关系等业务逻辑。

例如,我们可以添加验证,确保文章的标题和内容不能为空:

ruby
class Post < ApplicationRecord
validates :title, presence: true
validates :body, presence: true
end

4. 视图

打开 app/views/posts/ 目录,你会看到一系列的 .html.erb 文件。这些是视图模板文件,用于生成 HTML 页面。.erb 表示这是一个嵌入了 Ruby 代码的 HTML 文件。

第五部分:添加评论功能

1. 创建评论模型

一个博客应用怎么能没有评论功能呢?让我们来为文章添加评论功能。

首先,创建一个 Comment 模型,并将其与 Post 模型关联起来:

bash
bin/rails generate model Comment post:references body:text

这个命令会生成一个 Comment 模型,并添加一个 post_id 字段,用于关联到 posts 表。

2. 定义模型关联

打开 app/models/post.rb 文件,添加 has_many :comments

ruby
class Post < ApplicationRecord
has_many :comments
validates :title, presence: true
validates :body, presence: true
end

打开 app/models/comment.rb 文件,belongs_to :post 已经被自动添加好了:

ruby
class Comment < ApplicationRecord
belongs_to :post
end

3. 运行数据库迁移

bash
bin/rails db:migrate

4. 添加嵌套路由

为了让评论的 URL 看起来更清晰(如 /posts/1/comments),我们需要在 config/routes.rb 文件中添加嵌套路由:

ruby
Rails.application.routes.draw do
resources :posts do
resources :comments
end
end

5. 创建评论控制器

bash
bin/rails generate controller Comments

6. 实现评论功能

现在,我们需要在 CommentsController 中实现创建和删除评论的功能,并在文章的详情页面 (app/views/posts/show.html.erb) 添加评论表单和评论列表。

这部分涉及到更多的代码编写,你可以参考 Rails 官方文档或其他教程来完成这部分功能。

第六部分:后续学习

恭喜你!你已经成功地构建了你的第一个 Rails 应用。当然,这仅仅是一个开始,Rails 的世界还有很多精彩的内容等待你去探索。

以下是一些你可以继续学习的方向:

  • 用户认证: 使用 Devise 等 gem 为你的应用添加用户注册和登录功能。
  • 文件上传: 使用 Active Storage 实现文件上传功能。
  • 前端框架集成: 将 React, Vue 或 Stimulus 等前端框架集成到你的 Rails 应用中。
  • 测试: 学习编写测试代码,确保你的应用质量。
  • 部署: 将你的应用部署到 Heroku, Render 等云平台。

总结

在本教程中,我们学习了如何使用 Ruby on Rails 从零开始构建一个 Web 应用。我们了解了 Rails 的基本概念、核心组件和开发流程。希望本教程能为你打开 Rails 开发的大门,让你感受到 Rails 的强大和魅力。

继续学习,不断实践,你也能成为一名优秀的 Rails 开发者!

滚动至顶部