没有测试过这个,但它可能工作。
这样做是为了让你的源数据库的URL:
heroku console "ENV['DATABASE_URL']" --app mysourceapp
然后尝试执行db:push
这一点。
heroku db:push database_url_from_before --app mytargetapp
如果Heroku不允许从网络外部访问数据库机器,这可能无法正常工作。你也许可以尝试在你的应用程序代码中使用水龙头(heroku db命令在内部使用的gem)(也许是一个rake任务)。这将比上述方法更快,因为所有内容都完全保留在AWS内。
编辑:
下面是一个(当然哈克)的方式做上述I:
抓取数据库的URL,如上面的第一个代码段。然后从一个rake任务(你可以在控制台上执行它,但是你有可能在console命令中运行超过30秒的超时限制),执行一个shell命令来轻敲(无法轻易确定是否可以直接从Ruby使用tap;全部文档显示使用CLI):
`taps pull database_url_from_source_app #{ENV['DATABASE_URL']}`
反引号是重要的;这就是Ruby如何表示一个shell命令,它是什么。希望可以从应用程序访问tap命令。这样可以避免从Heroku外部访问数据库机器的问题,因为您在应用程序中运行此命令。
来源
2010-10-05 06:44:07
tfe
旁注:Heroku的束和捆扎机是分开的,不相关的概念。 – tfe 2010-10-05 06:40:41
嗯,当我写这些时,我甚至都没有想过这种可能的混淆。 – holden 2010-10-05 13:54:49