我正在考虑在我的下一个项目中使用 Ruby on Rails。了解 Rails 网站的部署很容易理解(听起来我将使用Phusion Passenger)
但现在我正在尝试找出数据库。我看到很多关于“数据库迁移”的信息,它允许我使用 ruby 代码更新数据库。我还看到我被允许创建这些迁移的up和down变体。
但是,我只能理解这如何在一个方向上干净利落地工作。想象一下,如果我突然说“颜色列不能为空”。因此,up将使其成为必需并为所有 NULL 条目提供默认值。但是下跌会怎么做呢?如果您关心它与它的启动方式相同,则不能只将默认值设置回 NULL。
这对于发布到生产来说并不重要。这可能只是在一个方向(向上方向)完成。但是,我想在允许签入之前使用 Gerrit 进行代码审查以及设置一个机器人来运行构建......
那怎么可能呢?从一个代码审查到下一个,构建服务器将检查新的代码集并运行迁移?但是当这种情况发生时,它甚至不会保留以前的迁移代码,那么它如何运行向下的步骤呢?作为一个更简单的示例,我看不到如何检查旧版本的代码并向后“db migrate”。