从现有数据库构建db:rake任务



我有一个对postgresql数据库进行了大量编辑的项目。

我试图找出是否有一种方法来建立一个新的db:rake文件,这样我就可以很容易地在新服务器上重建数据库。不需要手动编辑db:rake文件

感谢
Ruby 1.9.3
CentOS 6.4
Ruby on Rails 3
postgresql 9.3

为了清楚起见,我假设当您提到db:rake文件时,您指的是迁移文件。

在Rails中,您不希望使用迁移文件重新构建数据库。它们很快就会过时,指的是不再存在的东西,等等。相反,最佳实践是使用schema.rb文件重新创建数据库。这是我之前写的一个回答。简而言之,schema.rb文件表示数据库表结构;一个快照,如果你愿意的话。注意它不包含数据,只包含表结构。

在您的场景中,为了创建或确保您的schema.rb是最新的,您只需转储模式,如下所示:

rake db:schema:dump

这将重新生成schema.rb文件。然后,要在另一个环境中从该文件重新构建数据库,只需重新加载模式,如下所示:

rake db:schema:load

如上所述,schema.rb不包含表中的任何数据,它仅仅表示结构。如果希望使用初始值/默认值预加载数据库,则需要使用seed.rb文件。只需编写.create语句,并像这样运行它:

rake db:seed