我有一个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