创建后端项目
# 把国外地址换成国内地址
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
# 设置国内镜像
bundle config mirror.https://rubygems.org https://gems.ruby-china.com
# 安装 Rails
gem install rails -v 7.0.2.3
# 安装 postresql 驱动
pacman -S postgresql-libs
# 进入工作目录
cd ~/repos
# 创建 Rails 项目,--api 只使用 api 模式,数据库使用 postgresql,跳过测试,项目名
rails new --api --database=postgresql --skip-test mangosteen-1
# 用 VSCode打开,这个时候可以把原来的窗口关掉了
code mangosteen-1
# 新建终端
bundle exe rails server
# 或者 bin/rails s
等待端口启动
=> Booting Puma
=> Rails 7.0.4.2 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.0.0-p0) ("Birdie's Version")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 8005
* Listening on http://127.0.0.1:3000
浏览器访问 http://127.0.0.1:3000
,发现
ActiveRecord::ConnectionNotEstablished
数据库连接失败,因为没有数据库,终端运行
docker run -d --name db-for-mangosteen -e POSTGRES_USER=mangosteen -e POSTGRES_PASSWORD=123456 -e POSTGRES_DB=mangosteen_dev -e PGDATA=/var/lib/postgresql/data/pgdata -v mangosteen-data:/var/lib/postgresql/data --network=network1 postgres:14
修改 database.yml
development:
<<: *default
database: mangosteen_dev
username: mangosteen
password: 123456
host: db-for-mangosteen
再次运行 bin/rails s
看到下面就成功啦
原来 Rails 这么爽
数据库建模
建模工具:
# bin/rails generate model NAME [field[:type][:index] field[:type][:index]] [options]
bin/rails g model user email:string name:string
会创建两个文件
# app/models/user.rb
class User < ApplicationRecord
end
# db/migrate/20230413060421_create_users.rb
class CreateUsers < ActiveRecord::Migration[7.0]
// 修改数据库
def change
// 创建一个 users 表
create_table :users do |t|
// t.type :XXX 添加类型为 type 的 XXX 字段
t.string :email
t.string :name
// t.timestamps 会生成 created_at(创建时间)和 updated_at(更新时间) 两个字段
t.timestamps
end
end
end
执行下面命令,同步到数据库
bin/rails db:migrate
创建路由
# config/routes.rb
// curl http://127.0.0.1:3000/users/1,会调用 users 的 show 方法
get '/users/:id', to: 'users#show'
// curl -X POST http://127.0.0.1:3000/users,会调用 users 的 create 方法
post '/users', to: 'users#create'
创建 controller
控制器生成器:
# bin/rails generate controller NAME [action action] [options]
bin/rails g controller users create show
会创建一个实现方法的文件
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
end
def show
end
end