沒有測試過這個,但它可能工作。
這樣做是爲了讓你的源數據庫的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