丢失了我的schema.rb! 可以重新生成吗?
由于一些部署问题,我停止在git中跟踪schema.rb。 不知何故,我已经塞满了这个和沿途我的schema.rb文件已经消失的地方。
有没有从数据库或从迁移重新生成schema.rb的方法? 我不想丢失现有的数据。
如果你运行一个rake -T它会列出你的Rails项目的所有可能的rake任务。 其中之一是db:schema:dump ,它将从数据库中重新创buildRails应用程序的schema.rb。 
 bundle exec rake db:schema:dump 
小心,
 rake db:schema:dump 
将从数据库转储当前的数据库模式。 这意味着如果您对迁移进行了任何更改,它们将不会反映在schema.rb文件中,而不是您想要的IMO。
如果要从迁移中重新创build模式,请执行以下操作:
 rake db:drop # ERASES THE DATABASE !!!! rake db:create rake db:migrate 
 rake db:schema:dump 
我认为这在Rails 3中仍然有效 – 它从数据库重新生成schema.rb。
 如果你在本地重新生成schema.rb ,你应该没问题。 它只是保存了数据库表的结构表示。 数据本身不包含在这个文件中。 
 要重新生成您的schema.rb文件,请运行: 
 bundle exec rake db:schema:dump 
 然后简单地提交新的schema.rb文件,你应该状态良好! 
直接从schema.rb文件本身:
如果您需要在另一个系统上创build应用程序数据库,则应该使用
db:schema:load,而不是从头开始运行所有的迁移。 后者是一种有缺陷的和不可持续的方法(你将积聚的迁移越多,运行的速度越慢,发生问题的可能性也越大)。
 所以不要做rake db:migratebuild议,这是在写这篇文章的时候build议的 – 最低评分的答案。 
RAILS 5路:
 rails db:schema:dump 
或者如果你遇到Gem :: LoadError那么:
 bundle exec rails db:schema:dump 
注意:
 在rails 5中,build议使用rails而不是rake生成/执行任务,这只是记住,rails生成的任务是扩展.rake参见lib/tasks/myTask.rake 。 这意味着这些任务也可以通过预取rake来执行。 
我也有一个类似的问题,即使我删除了迁移,我的旧模式不刷新。
所以,我所做的是删除数据库中的所有现有表,并再次迁移它们。 然后运行“db:schema:load”命令给了我一个新的schema.rb。
 drop table my_table_name // deleted them indivisully rake db:migrate rake db:schema:dump // re-created a new schema