【问题标题】:What's a good way to clean up my migrations in Rails?在 Rails 中清理我的迁移的好方法是什么?
【发布时间】:2011-07-26 02:33:21
【问题描述】:

所以我已经在这个网络应用程序上工作了一年,我想将架构编译到 ONE 迁移中,这样我的文本编辑器加载速度更快,git 工作目录不会那么混乱。

搜索会更快。

我的任何配置/数据库都不会长 4000 像素。

【问题讨论】:

  • 我认为这也提出了改进 Rails 迁移的建议。真的,谁 rake db:rollback STEP=10?!为什么我们需要将迁移保留在我们的项目中,因为我们有一个工作模式?也许有一个 rake db:clean?

标签: ruby-on-rails activerecord rails-activerecord rails-migrations


【解决方案1】:

迁移服务器后删除迁移文件。如果您想从新部署开始,请运行 rake db:schema:loadrake db:setup。您不应该按照 here 的说明重新运行所有迁移。

【讨论】:

    【解决方案2】:

    您不需要永远保留您的迁移,只要您确定不再需要它们,就可以随意删除它们。只需进入您的 db/migrate/ 目录并删除比几个月更早的迁移。

    只要您要删除的所有迁移都已应用到所有地方(即开发和生产),那么您就不再需要它们(除非您想倒退)。确实,迁移并不意味着永久文件,它们只是将您从 A 带到 B,然后它们只是行李。

    【讨论】:

      【解决方案3】:

      一种方法是使用一个空白数据库并运行所有迁移。现在您已经获得了可以保存到 yaml 的所有模板数据。 yaml 加上架构应该足以在不运行任何以前存在的迁移的情况下恢复数据库。

      但是,其他答案应提及执行此操作的现有工具或 gem。

      【讨论】:

      • 希望有像你提到的更具体的命令或宝石 :-)
      • 是的,只需将 db/schema.rb 内容复制粘贴到新的迁移中,就足够了
      【解决方案4】:

      鉴于没有一个答案提到它,这是完成这项工作的宝石:https://github.com/jalkoby/squasher

      它基本上从头开始重新运行迁移,直到您指定的日期,然后将生成的 db/schema.rb 加载到替换旧迁移的初始迁移中。它还可以清理schema_migrations 表,这样你就不会得到这些

      up     <timestamp>  ********** NO FILE **********
      

      运行rake db:migrate:status时的条目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-23
        • 2015-05-24
        • 1970-01-01
        • 2015-07-26
        • 2011-04-08
        • 2013-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多