【问题标题】:rakefile questions with Sequel commandsSequel 命令的 rakefile 问题
【发布时间】:2026-02-04 22:30:02
【问题描述】:

我正在查看一些代码,但我不明白某些行。代码如下:

require "bundler"
Bundler.require

namespace :db do
  desc "Setup database"
  task :setup do
    Sequel.extension :migration
    @database = Sequel.postgres "sequel-playground"
  end

  desc "Run migrations"
  task :migrate => [:setup] do
    Sequel::Migrator.run(@database, "db")
  end

  desc "Reset database"
  task :reset => [:setup] do
    Sequel::Migrator.run(@database, "db", :target => 0)
    Sequel::Migrator.run(@database, "db")
  end
end

我理解涉及捆绑程序、命名空间、说明和任务的行。但是,我不明白这些东西......

-Sequel.extension :migration 这行在做什么? -@database = Sequel.postgres lins "sequel-playground 行只是设置一个等于 Sequel 数据库对象的实例变量?对吗? -行内:

Sequel:: Migrator.run(@database, "db")

Sequel 是模块,Migrator 是类还是运行方法?这两个参数在做什么?

- :target => 0 在重置任务中是做什么的?

【问题讨论】:

    标签: ruby sequel rakefile


    【解决方案1】:

    线

    Sequel.extension :migration
    

    Simple 为 Sequel 手动启用迁移扩展,因为它不是核心库的一部分。

    Migration Extension

    线

    Sequel.postgres
    

    打开数据库,为您提供一个可以在其上运行命令的实例。

    Open Database

    至于

    Sequel::Migrator.run(@database, "db", :target => 0)
    

    它只是告诉 Sequel 将给定的数据库迁移到模式的版本 0。

    Rake Migrations

    文档通常包含这些问题的所有答案。

    【讨论】:

    • 谢谢,我在阅读文档时仍然遇到问题……只是见面还没有意义。什么是模式?它们与 db 中的迁移文件有何不同?
    • 迁移文件单独更改数据库架构。运行迁移文件的结果将是一个模式。因此,回到架构的版本 0 本质上意味着回滚所有迁移文件。不过,这与您最初提出的问题完全不同。