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版本管理器(如rbenv或RVM)来管理Ruby版本,这样可以方便地切换不同项目所需的Ruby版本。
macOS/Linux (使用 rbenv):
1. 安装 rbenv 和 ruby-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/: 包含一些可执行脚本,如rails、rake。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的工作流程大致如下:
- 路由 (
config/routes.rb): 根据URL/posts,路由系统将其匹配到PostsController的index动作。 - 控制器 (
app/controllers/posts_controller.rb):PostsController#index动作通常会查询数据库获取所有文章。
ruby
def index
@posts = Post.all # 从数据库获取所有文章
end
控制器将查询结果(一个包含所有Post对象的数组)赋值给实例变量@posts,以便在视图中使用。 - 模型 (
app/models/post.rb):Post.all调用Post模型的方法来与数据库交互。模型定义了数据结构、验证规则、以及与数据库的映射关系。
ruby
class Post < ApplicationRecord
# 定义字段的验证规则等
end - 视图 (
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. 更多学习资源
- Rails 指南: https://guides.rubyonrails.org/ (官方文档,非常详细和全面)
- Ruby on Rails 教程: https://www.railstutorial.org/ (通过实践项目学习Rails的经典教程)
- Rails API 文档: https://api.rubyonrails.org/ (查阅Rails类和方法的详细说明)
总结
本指南介绍了Ruby on Rails的开发环境搭建、应用创建、核心目录结构、脚手架使用以及基本的MVC工作流程。Rails凭借其高效的开发速度和强大的功能,仍然是构建Web应用的优秀选择。随着你对Rails的深入学习,你将能更好地理解其“约定优于配置”的强大之处,并能快速构建出复杂的Web应用。