繁体   English   中英

混合Rake任务和迁移(旧版Rails应用的旧版)

[英]Mixing Rake tasks AND migrations (legacy to new Rails app)

我目前正在将遗留(Rails)应用程序数据架构重新设计到新的Rails应用程序中。 我要做的是:

  • 1迁移:在多个表中创建新字段,然后添加新字段
  • 1 Rake任务:将旧字段值分派到新创建的表字段中
  • 1迁移:删除未使用的字段,删除一些旧表

确实可以,但是可以将这两个迁移+ rake任务“混合”到一个脚本中吗? 除了一个脚本一个接一个地运行3个脚本之外,真的没有其他解决方案吗? (派发佣金任务最多需要10分钟)。

当我要部署到生产环境时,我真的更希望只“射击并忘记”一个命令行,从旧的应用程序迁移到新的应用程序。

根据rake任务的复杂性,您可以在迁移文件中全部完成此操作。 只需非常小心地重新定义您需要访问的模型,以避免任何新的验证会失败,因为这些列尚不存在。 谷歌寻求解决方案。

一种替代方法是从处理此问题的中央rake任务中调用所有内容。 我不确定我是否很喜欢。

要记住的一件事...如果rake任务无法迁移某些数据会发生什么。 在运行删除旧字段的迁移之前,您需要验证其是否全部正常。

好的,最后我只在需要时使用原始SQL语句使用一个rake任务:

dropped_fields = "ALTER TABLE `locations` DROP `name`, DROP.....;"
ActiveRecord::Base.connection.execute(dropped_fields)

我建议您进行三个独立的迁移,即

  • 新增栏位
  • 更新资料
  • 放下字段

第二项任务是仅执行必要更新的“仅数据”迁移。 您需要确保此任务以成功/失败而定的正确方式退出,因为您将依靠ActiveRecords Migrations流控制在失败/工作时做正确的事情。

现在,您只需一个rake db:migrate命令即可在部署期间执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM