我可以使用$ heroku pgbackups:capture
转储heroku数据库。此外,this SO post表明有一些工具用于获取开发数据库并将其转储到seed.rb。
我想知道是否有一种简单的方法来组合这两个进程,有效地将数据从生产Heroku数据库转储到我的本地seeds.rb中,以进行更真实的开发测试。
如果可以的话,最干净的方法是什么?
更新
根据dB'的深刻答案,我可能会考虑在本地使用PGSQL。然而,我仍然对问题的seed.rb方面感兴趣,如果有办法轻易做到这一点。
答案 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大量复制。)