【发布时间】:2018-01-17 10:38:21
【问题描述】:
我尝试按照源代码和文档进行操作,但在一个迷失的早晨之后我放弃了:同时好像在 SchemaDumper 中没有做出足够的假设,同时没有 SchemaLoader并遵循sequel 命令源代码,它似乎破坏了迄今为止的迁移信息(因为它在结果文件中没有“迄今为止的迁移”类型的信息)。
这样做的动机是在测试中迁移失败(Sequel 认为表不存在,但它们在迁移到新版本时会中断,并且检查挂起的迁移检查失败) - 以及之前运行的经验从历史开始到今天的所有迁移通常都是建立数据库的坏方法。
到目前为止,我已经得到了这个:
namespace :schema do
task :dump => :migrations_environment do
schema = without_sequel_logging{ DB.dump_schema_migration }
File.open("db/schema.rb", 'w') {|f| f.write(schema) }
end
task :load => :migrations_environment do
Sequel::Migrator.run(DB, "db/schema.rb")
end
end
通常load 会失败,因为Migrator 会做出很多假设,首先会以特定顺序为它提供一个充满文件的文件夹,但这显然正是sequel -m 和sequel -d应该根据当前的源代码执行 - sequel -m 和 sequel -d 组合显然是您想要进行架构转储和架构加载时应该使用的。
有什么想法吗?
【问题讨论】: