在Heroku中自动执行跨环境数据库还原

时间:2012-10-26 14:44:00

标签: api heroku

我有两个heroku环境,我想将生产数据库的最新备份复制到我的开发环境。

使用CLI,这很简单:

heroku pgbackups:restore DATABASE `heroku pgbackups:url --app Production` --app Development --confirm Development

但我想自动化这个。所以我做了一个使用heroku_api gem的rake任务。这应该允许从Heroku Scheduler调用它。

task :auto_refresh do
  @heroku = Heroku::API.new(...)
  @heroku.post_ps('Development', 'heroku pgbackups:restore DATABASE `heroku pgbackups:url --app Production` --app Development --confirm Development')
end

这不起作用。它所做的只是从最新的开发备份中刷新开发。

我可以自动解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

使用'heroku'gem(不是'heroku-api'gem),您可以操作从一个应用程序到另一个应用程序的备份列表

安装pgbackups插件时,会创建一个配置变量PGBACKUPS_URL。您需要在Dev应用程序中使用此值,如下所示:

# Get the latest backup
client = Heroku::Client::Pgbackups.new('https://bigmessything@pgbackups.heroku.com/client')
backup = client.get_latest_backup

backup ['public_url]应包含您要使用上面的代码恢复的网址