Tôi đã gặp phải vấn đề tương tự và đây là cách tôi giải quyết nó.
-
Thiết lập url cơ sở dữ liệu bạn muốn sao chép từ đó làm biến môi trường trên ứng dụng cơ sở cho đường dẫn. Trong trường hợp của tôi, đây là
STAGING_DATABASE_URL
. Định dạng url làpostgresql://username:[email protected]:port/db_name
. -
Trong
app.json
của bạn đảm bảo sao chép biến đó qua. -
Trong
app.json
của bạn cung cấp một cơ sở dữ liệu mới sẽ đặtDATABASE_URL
biến môi trường. -
Sử dụng tập lệnh sau để sao chép qua cơ sở dữ liệu
pg_dump $STAGING_DATABASE_URL | psql $DATABASE_URL
Đây là app.json
của tôi tệp để tham khảo:
{
"name": "app-name",
"scripts": {
"postdeploy": "pg_dump $STAGING_DATABASE_URL | psql $DATABASE_URL && bundle exec rake db:migrate"
},
"env": {
"STAGING_DATABASE_URL": {
"required": true
},
"HEROKU_APP_NAME": {
"required": true
}
},
"formation": {
"web": {
"quantity": 1,
"size": "hobby"
},
"resque": {
"quantity": 1,
"size": "hobby"
},
"scheduler": {
"quantity": 1,
"size": "hobby"
}
},
"addons": [
"heroku-postgresql:hobby-basic",
"papertrail",
"rediscloud"
],
"buildpacks": [
{
"url": "heroku/ruby"
}
]
}