我可以删除所有迁移文件并从头开始



我有一个Rails-API应用程序,我将在很长一段时间后重新部署。该应用程序是非生产的,但是我准备部署生产版本。我想基本上删除所有迁移文件并使用该模式从头开始,此方法有任何问题吗?假设我可以做到这一点,我需要将schema.rb更改为什么?这是一个普遍的做法吗?对我来说似乎很合理。

# what do I change the version param value to?
ActiveRecord::Schema.define(version: 20171129023538)  

迁移用于更新您的数据库或回滚到先前的版本。一旦迁移在所有环境中运行,它们就再也不会看过(除非您手动用schema_migrations表乱七八糟)。一旦运行了所有迁移,数据库的当前状态就在db/schema.rb(或db/structure.sql)中,因此schema.rb是您从新鲜数据库开始的全部。

我倾向于每隔几个月清除旧的迁移,以减少混乱。

就版本而言,您可以不理会它。只要它代表了过去的时间(例如2017-11-29 02:35:38),并且比需要运行的任何迁移(在删除所有迁移时都不适用)那是什么都没关系。

继续清除所有迁移,它们已经反映在schema.rb中,如果您真的需要它们,您随时可以从修订控制中挖出它们。

您不需要保持旧的迁移。根据Rails自己的schema.rb文件(在评论中),DB应从schema.rb而不是迁移中重新创建。

您可以使用这样的耙子任务清理旧迁移:

# lib/tasks/migration_archive.rake
namespace :db do
  namespace :migrate do
    desc 'Archives old DB migration files'
    task :archive do
      sh 'mkdir -p db/migrate/archive'
      sh '[ ! -f src ] || mv db/migrate/*.rb db/migrate/archive'
    end
  end
end

来源:https://codewithrails.com/clean-up-db-migrations

相关内容

  • 没有找到相关文章

最新更新