Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 什么';在Rails中清理迁移的好方法是什么?_Ruby On Rails_Activerecord_Rails Activerecord_Rails Migrations - Fatal编程技术网

Ruby on rails 什么';在Rails中清理迁移的好方法是什么?

Ruby on rails 什么';在Rails中清理迁移的好方法是什么?,ruby-on-rails,activerecord,rails-activerecord,rails-migrations,Ruby On Rails,Activerecord,Rails Activerecord,Rails Migrations,因此,我已经在这个web应用程序上工作了一年,我想将模式编译成一个迁移,这样我的文本编辑器加载得更快,git工作目录就不会那么混乱了 搜索和查找会更快 任何my config/db都不会有4000px长。一种方法是使用一个空白数据库并运行所有迁移。现在您已经拥有了所有可以保存到yaml的模板数据。yaml加上模式应该足以在不运行任何以前存在的迁移的情况下恢复DB 然而,其他答案应该提到一个现有的工具或gem 您不需要永远保留迁移,只要确定不再需要它们,您就可以随时删除它们。只需进入您的db/mi

因此,我已经在这个web应用程序上工作了一年,我想将模式编译成一个迁移,这样我的文本编辑器加载得更快,git工作目录就不会那么混乱了

搜索和查找会更快


任何my config/db都不会有4000px长。

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


然而,其他答案应该提到一个现有的工具或gem

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


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

迁移服务器后删除迁移文件。如果您想要从新的部署开始,请运行
rakedb:schema:load
rakedb:setup
。您不应该像前面解释的那样重新运行所有迁移。

鉴于没有一个答案提到这一点,这就是完成这项工作的gem:

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

up     <timestamp>  ********** NO FILE **********
up**********无文件**********

运行
rake db:migrate:status

时的条目希望得到更具体的命令或gem,如您所提到的:-)是的,只需将粘贴db/schema.rb内容复制到新的迁移中,这就足够了。我认为这也提出了改进Rails迁移的建议。真的,谁做rake db:rollback STEP=10?!既然我们有一个工作模式,为什么我们需要在项目中保留迁移?也许有一个rake db:干净?