Gem Sequel Migration 指北

tablecell · 2021年10月05日 · 356 次阅读

首先安装 sequel

gem install sequel -NV

sequel 的 migration 类似 Rakefile 执行 task 不用生成类文件

migration 文件命名规则有两种方式 

  1. 001_xxx.rb
  2. timestamp_xxx.rb

第一种按 i++ 递增 可以 1-9 或者 01-99 一般 999 以内应该够了

第二种按以时间戳递增 跟 rails 类似

xxx 是可以是任意的文件名 这里以用 Sequel 开发招聘网站为例介绍第一种

新建 migration 目录存放迁移文件

md mig

新建 migration 文件 招聘需要发布标题 需要 title 字段

vi mig/001_+title.rb

Sequel.migration do
  change do
    create_table(:jobs) do
      primary_key :id, unique: true
      String :title, null: false
    end
  end
end

执行 migration
sequel -m mig sqlite://jobs.db

其中 -m 参数是指 migration 目录 后面跟 数据库 dsn

招聘需要有接收简历的邮箱 再增加一个字段 email

vi mig/002_+email.rb

Sequel.migration do
  change do
    add_column :jobs,:email,String 
  end
end

格式也很好记 外层不变 migration do/change do (复制粘贴即可)
里层  action  :表名, :字段名,数据类型

action 也是简单的动宾结构 add/drop/rename _ column/index/view 

招聘需要发布薪资 再增加一个字段 salary

vi mig/003_+salary.rb

Sequel.migration do
  change do
    add_column :jobs,:salary,Integer 
  end
end

薪资一般是区间,要设置两个字段,这就需要调整原来的表结构

可以把原来的 salary 删除 用 drap_column 然后用 add_column 再新增两个

或者 用改名 这里用改名 rename_column

vi mig/004_salary!salarybase.rb

Sequel.migration do
  change do
    rename_column :jobs,:salary,:salarybase
  end
end

再增加一个 salarytop

vi mig/005_+salarytop.rb

Sequel.migration do
  change do
    add_column :jobs,:salarytop,Integer
  end
end

如果想回滚 直接 用-M 指定序号 比如

sequel -m mig -M 001 sqlite://jobs.db

就回到初始建表的状态

sequel -m mig -M 005 sqlite://jobs.db

就直接到从 001 执行到 005

-M 执行的过程很象看片来回拖进度条

记住 -m -M 两个参数就能执行大部分常用的操作了

更多用法参数参考 https://github.com/jeremyevans/sequel/blob/master/doc/schema_modification.rdoc

sequel + rack 做的招聘网站 https://github.com/tablecell/myrack

别人安装 gem 的时间, 用 sequel 已经把网站做好了

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号