转储Heroku数据库以便在本地seed.rb中使用的最简单方法?

时间:2013-02-08 18:23:18

标签: ruby-on-rails ruby-on-rails-3 heroku seeding database-dump

我可以使用$ heroku pgbackups:capture转储heroku数据库。此外,this SO post表明有一些工具用于获取开发数据库并将其转储到seed.rb。

我想知道是否有一种简单的方法来组合这两个进程,有效地将数据从生产Heroku数据库转储到我的本地seeds.rb中,以进行更真实的开发测试。

如果可以的话,最干净的方法是什么?

更新

根据dB'的深刻答案,我可能会考虑在本地使用PGSQL。然而,我仍然对问题的seed.rb方面感兴趣,如果有办法轻易做到这一点。

2 个答案:

答案 0 :(得分:5)

有几种方法可以完成这样的事情。 @dB'概述了其中一个 - 使用the PG Backups add-on to export your database。这是一个很好的选择,但涉及一些(微不足道的)手动命令。

我建议使用pg:transfer Heroku CLI plugin一步传输数据。在封面下,它仍然与使用PG备份一样发生,但它打包得更好,并且有一些有用的默认值。

在应用程序的目录中,通过安装插件并执行pg:transfer命令,在本地复制生产数据库(假设本地PG数据库)。

$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer
$ heroku pg:transfer

您也可以设置几个选项。有关详细信息,请参阅my writeup

希望有所帮助!是的,请使用same database during development as you do in production

答案 1 :(得分:2)

不确定这是否是您要找的,但您是否尝试使用pgbackups将数据库复制到本地计算机:capture和pg_restore?此方法不使用seeds.rb,但仍在本地计算机上重新创建生产数据库。它看起来像这样。

$ heroku pgbackups:capture
$ curl -o latest.dump `heroku pgbackups:url`
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump

(此代码从the explanation at the Heroku dev center大量复制。)