theme: condensed-night-purple
ruby china wiki:https://ruby-china.org/wiki
The Rails Doctrine: https://ruby-china.org/wiki/the-rails-doctrine
Guides:
ruby toolbox: https://www.ruby-toolbox.com/
0. 前言
最近国内互联网就业市场持续低迷,作为主要着力于前端技术的我,也开始探索后端、部署相关的技术。之前除了接触过 Node.js,还有一门我一直想学习和应用的语言就是 Ruby 了。
第一次听说 Ruby 是在 2020 年的夏天,当时还是土木 🐶 的我,从前辈口中听说了 Ruby 这个词,他说他要亲自教我,但是没有天赋的我还是去土木和设计行业卷了一阵子才正式返航计算机。虽迟但到,在 2023 年的夏天,我写下这一篇快速入门,也算是一种重逢吧!
Ruby 同样是一门面向对象的语言,抛开性能不谈,它的语法非常简单,行文甚至比 Python 还要简洁,而且足够语义化,这也是我选择它的重要原因。Rails 作为 Ruby 的开发框架,和大部分其他语言框架一样采用 MVC 架构(附录 A 中我添加了 MVC 的说明),它提供了一些工具和函数来快速开发 Web 应用程序。另一方面,它还支持主流的数据库,比如:MySQL、PostgreSQL 和 SQLite 等。
目前,我正在开发一个 H5 小应用,数据库使用的是 PostgreSQL,总体体验下来,还算 OK,如果要问我,什么是 Rails?
Rails = Routes + MVC
以下是正文。
1. 创建 Rails API
安装 ruby 的过程我就省略了,安装完成后执行 ruby --version
来查看版本。
1.1 生成 rails api 服务
在 docker 容器中执行以下命令生成一个 rails api 服务
shell gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ bundle config mirror.https://rubygems.org https://gems.ruby-china.com gem install rails -v 7.0.2.3 pacman -S postgresql-libs cd ~/repos rails new --api --database=postgresql --skip-test catdou-1 code catdou-1 bin/rails server
会报错,需要启动一个数据库,如下。
1.2 启动 postgres 数据库
在宿主机终端执行以下命令启动一个 postgres 数据库(版本为 14)
shell docker run -d --name db-for-catdou -e POSTGRES_USER=catdou -e POSTGRES_PASSWORD=123456 -e POSTGRES_DB=catdou_dev -e PGDATA=/var/lib/postgresql/data/pgdata -v catdou-data:/var/lib/postgresql/data --network=network1 postgres:14
1.3 连接数据库
配置开发环境变量,config/database.yml
yaml development: <<: *default database: catdou_dev username: catdou password: 123456 host: db-for-catdou
重新运行 server
shell bin/rails server
1.4 model 定义
user 是表名,email 和 name 是字段
shell bin/rails g model user email:string name:string
生成数据库 migrate 文件以及 model 文件:
db/migrate/20230607152514createusers.rb
ruby class CreateUsers < ActiveRecord::Migration[7.0] # 定义一个类,用于创建表 def change create_table :users do |t| # 方法名为 create_table,表名为 users t.string :email # 创建字段 email,类型为 string t.string :name # 创建字段 name,类型为 string t.timestamps # 创建时间字段:updated_at 更新时间,created_at 创建时间 end end end
app/models/user.rb
ruby class User < ApplicationRecord end
1.5 数据库迁移同步
将创建的 user 模型迁移到 postgres 数据库(会生成一个 users 表)
shell bin/rails db:migrate bin/rails db:rollback step=1 # 如果需要的话,可以用它将数据库回退到上一步
1.6 controller 定义
生成 users 的 controller,包括 show 和 create 方法
shell bin/rails g controller users show create
生成 users 的控制器文件以及添加相应路由
app/controllers/users_controller.rb(源文件已做修改)
```ruby class UsersController < ApplicationController def show user = User.findbyid params[:id] # 在 users 表中找到对应 id 的那一行记录 if user render json: user # 如果存在,返回 user else head 404 # 如果不存在,返回一个 404 响应码 end end
def create # 在 users 表中新建一条记录,email 是 'eric@x.com',name 是 'eric' user = User.new email: 'eric@x.com', name: 'eric' if user.save # 如果保存成功了 render json: user # 返回给前端 json 数据(新建的 user) else