Ruby on Rails - 介绍
Ruby on Rails - 简介
Section titled “Ruby on Rails - 简介”什么是 Ruby?
Section titled “什么是 Ruby?”在深入学习 Rails 之前,了解 Ruby 是必要的,它是构建 Rails 的编程语言。
Ruby 通常被描述为以下几种语言的结合:
- Smalltalk 的概念优雅和纯粹的面向对象思想,
- Python 的易用性和可读性,以及
- Perl 的实用脚本能力。
Ruby 的主要特性:
- 一种动态的、开源的编程语言,专注于简洁性和生产力。
- 解释型语言,类似于 Perl、Python 和 Tcl/TK。
- 真正意义上的面向对象:在 Ruby 中,一切皆对象,包括数字等基本类型。
为什么 Rails 选择 Ruby?
Section titled “为什么 Rails 选择 Ruby?”Ruby 的设计哲学和特性使其非常适合使用 Rails 进行 Web 开发。它的流行源于:
- 可读性和简洁性:Ruby 的语法设计接近自然语言,使其相对容易学习和阅读。
- 开源:在宽松的许可下可用,培养了一个庞大而活跃的社区。
- 丰富的标准库和 Gems:拥有几乎所有任务所需的大量库(称为 ‘gems’)。
- 元编程 (Metaprogramming):Ruby 允许程序编写或操作其他程序(或自身),Rails 大量利用这一点来减少样板代码。
- 开发者幸福感 (Developer Happiness):这是 Ruby 社区的核心信条,专注于让开发变得愉快和高效。
考虑事项:
- 性能:历史上,与其他编译型语言相比,Ruby 的执行速度曾是一个问题。然而,随着 Ruby 最新版本中 YJIT(Yet Another JIT Compiler,又一个 JIT 编译器)等技术的进步,Rails 应用的性能已显著提升。
- 并发和并行:MRI(Matz 的 Ruby 解释器)中的全局解释器锁 (GIL) 意味着每个进程一次只能执行一个 Ruby 线程。但是,I/O 密集型操作可以释放 GIL,从而实现并发。对于 CPU 密集型任务,可以使用多进程架构(如 Puma Web 服务器使用的)或 Ractors 等实验性特性来实现并行。
Ruby 代码示例
Section titled “Ruby 代码示例”这是一个简单的 Ruby 类:
# The Greeter Classclass Greeter def initialize(name) @name = name.capitalize end
def salute puts "Hello, #{@name}! Welcome to the world of Ruby." endend
# 创建一个新对象g = Greeter.new("rubyist")
# 调用 salute 方法g.salute输出:
Hello, Rubyist! Welcome to the world of Ruby.嵌入式 Ruby (ERB)
Section titled “嵌入式 Ruby (ERB)”ERB (Embedded Ruby) 是一种模板系统,允许您将 Ruby 代码嵌入到文本文档中,最常见的是用于网页的 HTML 文件。Rails 在其视图模板中广泛使用 ERB。
ERB 使用特定的标签:
<% ... %>:执行标签内的 Ruby 代码。不会输出任何内容。<%= ... %>:执行 Ruby 代码并输出表达式的结果。<%# ... %>:注释标签;标签内的代码会被忽略。
示例 (template.html.erb):
<% page_title = "ERB 演示" %><% salutation = "尊敬的开发者," %>
<html><head> <title><%= page_title %></title></head><body> <p><%= salutation %></p> <p>这是 ERB 模板如何在 Rails 视图中工作的示例。</p></body></html>当 Rails 处理此 ERB 模板时,它将生成带有 Ruby 变量值插入的 HTML。
什么是 Rails?
Section titled “什么是 Rails?”- Ruby on Rails(通常简称“Rails”)是一个强大的 Web 应用框架,用 Ruby 编写。
- 由 David Heinemeier Hansson (DHH) 创建。
- 遵循模型-视图-控制器 (MVC) 架构模式。
- 强调约定优于配置 (CoC) 和不要重复自己 (DRY) 原则。
- 设计用于快速开发数据库驱动的 Web 应用。
- 开源且拥有一个庞大而充满活力的社区。
Rails 是一个全栈框架,这意味着它为 Web 应用开发的各个层面提供了工具和库:
- 数据库交互(通过 Active Record ORM)。
- 路由(将 URL 映射到控制器动作)。
- 控制器逻辑(处理请求和响应)。
- 视图模板(使用 ERB、Slim、Haml 等生成 HTML)。
- 静态资源管理(通过 Sprockets 或 Webpacker/Shakapacker 管理 CSS、JavaScript、图片)。
- 后台作业(Active Job)。
- 实时功能(Action Cable)。
- 邮件发送(Action Mailer)。
约定优于配置
Section titled “约定优于配置”Rails 对常见的命名约定做了假设(例如,一个 Book 模型通常映射到 books 数据库表)。通过遵循这些约定,开发者可以比许多其他框架少写大量配置代码。应用程序的结构和数据库模式通常为 Rails 提供了所需的所有信息。
Rails 的优势
Section titled “Rails 的优势”Rails 提供了提升开发者生产力的特性:
元编程 (Metaprogramming)
Section titled “元编程 (Metaprogramming)”Rails 利用 Ruby 的元编程能力来动态定义方法和行为,从而减少样板代码并使代码更具表现力。例如,Active Record 会自动为数据库列创建存取方法。
Active Record
Section titled “Active Record”Rails 中的对象关系映射器(ORM)。它允许开发者将数据库表像 Ruby 对象一样进行交互,抽象化了大部分 SQL。Active Record 处理数据库连接、模式发现、CRUD 操作(增删查改)、关联关系 (associations)、数据校验 (validations) 等。
Rails 具有强大的测试文化。当您创建模型或控制器时,它会自动生成测试文件(默认使用 Minitest)。fixtures 或 factories(例如 FactoryBot)等工具帮助设置测试数据。RSpec 是另一种流行的测试框架。
Rails 提供了三个默认环境:development、test 和 production。每个环境都有针对其目的定制的略微不同的配置(例如,缓存行为、错误报告、使用的数据库),从而简化了开发生命周期。
Scaffolding (脚手架)
Section titled “Scaffolding (脚手架)”Rails 可以生成“脚手架”——一套基本的模型、视图、控制器和路由,用于管理一个资源。这对于快速搭建 CRUD 界面、进行原型开发或学习 Rails 组件如何协同工作非常有用。