ruby-on-rails – 使用Gerrit进行Ruby on Rails数据库部署

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用Gerrit进行Ruby on Rails数据库部署前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考虑将 Ruby on Rails用于我的下一个项目.了解rails网站的部署很容易理解(听起来我会使用 Phusion Passenger)

但现在我想弄清楚数据库.我看到很多关于“数据库迁移”的内容,它允许我使用ruby代码更新数据库.我也看到我可以创建这些迁移的上下变体.

但是,我只能理解它如何在一个方向上干净利落地工作.想象一下,如果我突然说“颜色列不能为空”.因此,up将使其成为必需并为所有NULL条目提供默认值.但是下来会做什么?如果您关心它与它的启动方式相同,则不能将默认值设置回NULL.

这对于发布到生产来说并不重要.这可能只是在一个方向上完成(向上).但是,我想使用Gerrit进行代码审查,并在允许签入之前设置机器人来运行构建…

那怎么可能呢?从一个代码审查到下一个代码审查,构建服务器将检出新的代码集,并运行迁移?但是当发生这种情况时,它甚至不会保留以前的迁移代码,那么它如何运行向下步骤呢?作为一个更简单的例子,我看不出如何查看旧版本的代码并向后“db migrate”.

解决方法

是的,您无法查看旧版本的代码,然后从较新版本的代码运行向下迁移.在回滚到旧代码之前,您需要运行向下迁移.

在许多情况下,向下迁移是不切实际或不可能的.这不一定是坏事.它只是意味着您已经定义了一个“不返回点”,您将无法将数据库恢复到早期状态.

只需销毁该表或删除该列,即可轻松撤消创建表或添加列等迁移.但是,如果您正在执行更复杂的操作,例如添加默认值或移动数据,那么您可以告诉Rails,无法撤消此迁移:

def down
  raise ActiveRecord::IrreversibleMigration
end

我建议Gerrit永远不要假设有关数据库的任何内容.每次部署新版本时,它应以新数据库开始,并运行db:migrate以运行所有迁移.您可以使用像factory_girl这样的宝石来为您的应用程序填充演示数据以进行测试.

原文链接:https://www.f2er.com/ruby/268141.html

猜你在找的Ruby相关文章