删除Rails应用程序中的旧迁移文件

时间:2013-11-21 11:13:44

标签: ruby-on-rails rails-migrations

如果架构稳定,是否允许在Rails应用程序中删除(或存档)旧的迁移文件?

我的迁移很多,我怀疑某处可能存在一些问题,因为我偶尔会在Heroku上迁移数据库时遇到问题。

3 个答案:

答案 0 :(得分:25)

您不需要在Rails应用程序中保留旧的迁移文件,因为您应该在schema.rb或可用于重新生成模式的等效SQL文件中捕获数据库模式。

迁移不是数据库架构的权威来源。该角色属于db / schema.rb或Active Record通过检查数据库生成的SQL文件。它们不是为了编辑而设计的,它们只代表数据库的当前状态。

通过重播整个迁移历史记录,无需(并且容易出错)部署应用程序的新实例。只需在schema.rb或SQL文件中加载当前模式的描述就可以更加简单快捷。 此文件应进行版本控制并保留在源代码管理中。

要设置自动schema.rb生成,请通过config.active_record.schema_format设置修改config / application.rb,该设置可能是:ruby或:sql。 如果:选择ruby,则架构存储在db / schema.rb中。 如果:选择了sql,则以本机SQL格式转储模式 你的数据库。

答案 1 :(得分:1)

您可以删除旧的迁移。完成此操作后,在设置应用程序时,您需要运行:

rake db:schema:load

而不是:

rake db:migrate

答案 2 :(得分:0)

这是我的工作,我发现在生产ActiveRecord::SchemaMigration.last.version上迁移了最后一个版本,并在源代码中删除了之前的所有迁移。

不是最好的方法,但是我做了find db/migrate -type f,复制了上一个版本之前的文件列表和pbpaste | rm(macos)。