Ruby on Rails 入门指南 – wiki词典

Ruby on Rails 入门指南

Ruby on Rails(简称Rails)是一个使用Ruby语言编写的开源Web应用框架,它遵循“约定优于配置”(Convention Over Configuration)和“不要重复自己”(Don’t Repeat Yourself,DRY)的原则。这些原则使得Rails能够快速开发Web应用,并拥有一套完善的生态系统,包括数据库集成、Web服务、以及前端工具等。本指南将带你从零开始,了解如何搭建开发环境并创建一个简单的Rails应用。

1. 开发环境搭建

在开始使用Rails之前,你需要先搭建好开发环境。

1.1 安装 Ruby

Rails是基于Ruby语言的,所以首先需要安装Ruby。推荐使用Ruby版本管理器(如rbenvRVM)来管理Ruby版本,这样可以方便地切换不同项目所需的Ruby版本。

macOS/Linux (使用 rbenv):
1. 安装 rbenvruby-build
bash
brew install rbenv ruby-build # macOS
# 或者根据你的Linux发行版安装方式

2. 将 rbenv 添加到你的shell配置文件中(例如 ~/.bash_profile, ~/.zshrc):
bash
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

3. 安装一个Ruby版本(例如 3.2.2):
bash
rbenv install 3.2.2
rbenv global 3.2.2
ruby -v # 验证安装

Windows (使用 RubyInstaller):
1. 访问 RubyInstaller for Windows,下载并运行最新的 Ruby+Devkit 版本。
2. 在安装过程中,勾选“Add Ruby executables to your PATH”选项。
3. 安装完成后,打开命令提示符或PowerShell,运行 ruby -v 验证安装。

1.2 安装 Bundler

Bundler 是Ruby的依赖管理工具,用于管理项目所需的Gem(Ruby库)。
bash
gem install bundler

1.3 安装 Rails

Ruby和Bundler安装好后,就可以安装Rails了。
bash
gem install rails

安装完成后,运行 rails -v 验证Rails版本。

1.4 安装数据库 (可选但推荐)

Rails默认使用SQLite作为开发数据库,但如果你计划使用PostgreSQL或MySQL,建议提前安装并配置好。

2. 创建第一个Rails应用

现在我们来创建一个新的Rails应用。

bash
rails new my_first_app
cd my_first_app

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

3. 理解Rails应用结构

进入 my_first_app 目录后,你会看到以下核心目录:

  • app/: 包含应用的核心代码,遵循MVC(Model-View-Controller)模式。
    • assets/: 存放CSS、JavaScript和图片等前端资源。
    • controllers/: 处理用户请求,与模型和视图交互。
    • models/: 负责数据逻辑和数据库交互。
    • views/: 渲染HTML页面。
    • helpers/: 包含可被视图使用的辅助方法。
    • mailers/: 处理邮件发送。
  • bin/: 包含一些可执行脚本,如 railsrake
  • config/: 应用的配置文件夹,如数据库配置、路由配置等。
    • routes.rb: 定义了应用的URL路由规则。
    • database.yml: 数据库连接配置。
  • db/: 数据库相关的文件夹,包含迁移文件(migrations)和种子文件(seeds)。
  • lib/: 存放自定义的库文件。
  • log/: 应用的日志文件。
  • public/: 存放静态文件,如 index.html
  • test/: 存放应用的测试文件。
  • vendor/: 存放第三方代码。
  • Gemfile: 列出应用所需的所有Gem及其版本。

4. 运行应用

在应用根目录下,运行以下命令启动Rails服务器:

“`bash
rails server

或者简写为

rails s
``
服务器启动后,你可以在浏览器中访问
http://localhost:3000`,你将看到Rails的欢迎页面。

5. 生成一个脚手架 (Scaffold)

Rails的脚手架功能可以快速生成一个完整的CRUD(创建、读取、更新、删除)资源。我们来创建一个简单的博客文章(Post)资源。

bash
rails generate scaffold Post title:string content:text

这条命令会生成:
– 一个 Post 模型,包含 title (字符串) 和 content (文本) 字段。
– 一个 PostsController
– 一系列用于显示、创建、编辑和删除文章的视图文件。
– 相应的路由规则。
– 数据库迁移文件。

6. 运行数据库迁移

在创建或修改模型后,需要运行数据库迁移来更新数据库结构。

bash
rails db:migrate

这会在你的数据库中创建 posts 表。

7. 配置路由

打开 config/routes.rb 文件,你会看到 resources :posts 这一行是脚手架自动生成的。这意味着Rails已经为 /posts 路径配置了所有RESTful路由。

我们还可以设置根路径,让访问 http://localhost:3000 时直接显示文章列表:

config/routes.rb 中添加:

ruby
root 'posts#index'

现在,访问 http://localhost:3000 就会跳转到文章列表页。

8. 开始使用应用

重启Rails服务器(如果还在运行,先 Ctrl+C 停止,再 rails s 启动)。

在浏览器中访问 http://localhost:3000,你现在可以看到一个空的“Posts”页面。你可以点击“New Post”来创建新文章,体验CRUD功能。

9. 基本的MVC工作流程

当你访问 /posts 时,Rails的工作流程大致如下:

  1. 路由 (config/routes.rb): 根据URL /posts,路由系统将其匹配到 PostsControllerindex 动作。
  2. 控制器 (app/controllers/posts_controller.rb): PostsController#index 动作通常会查询数据库获取所有文章。
    ruby
    def index
    @posts = Post.all # 从数据库获取所有文章
    end

    控制器将查询结果(一个包含所有 Post 对象的数组)赋值给实例变量 @posts,以便在视图中使用。
  3. 模型 (app/models/post.rb): Post.all 调用 Post 模型的方法来与数据库交互。模型定义了数据结构、验证规则、以及与数据库的映射关系。
    ruby
    class Post < ApplicationRecord
    # 定义字段的验证规则等
    end
  4. 视图 (app/views/posts/index.html.erb): 控制器执行完毕后,Rails会渲染 app/views/posts/index.html.erb 视图。在这个视图中,你可以使用嵌入式Ruby(ERB)代码来显示 @posts 变量中的数据。
    html+erb
    <h1>Posts</h1>
    <table>
    <thead>
    <tr>
    <th>Title</th>
    <th>Content</th>
    <th colspan="3"></th>
    </tr>
    </thead>
    <tbody>
    <% @posts.each do |post| %>
    <tr>
    <td><%= post.title %></td>
    <td><%= post.content %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
    </tr>
    <% end %>
    </tbody>
    </table>
    <%= link_to 'New Post', new_post_path %>

10. 更多学习资源

总结

本指南介绍了Ruby on Rails的开发环境搭建、应用创建、核心目录结构、脚手架使用以及基本的MVC工作流程。Rails凭借其高效的开发速度和强大的功能,仍然是构建Web应用的优秀选择。随着你对Rails的深入学习,你将能更好地理解其“约定优于配置”的强大之处,并能快速构建出复杂的Web应用。

滚动至顶部