繁体   English   中英

Heroku Review Apps:复制数据库到审查应用程序

[英]Heroku Review Apps: copy DB to review app

尝试为应用程序完全自动化 Heroku 的评论应用程序(测试版)。 Heroku 希望我们使用db/seeds.rb来播种最近启动的实例的数据库。

我们没有这个应用程序的db/seeds.rb 我们想设置一个脚本来从当前父级(暂存)复制现有数据库,并将其用作正在审查的新应用程序的数据库。

这我可以手动完成:

heroku pg:copy myapp::DATABASE_URL DATABASE_URL --app myapp-pr-1384 --confirm myapp-pr-1384

但是我不知道如何将 Heroku 创建的应用程序名称添加到部署后脚本中。

任何人都试过这个并知道它是如何自动化的?

我遇到了同样的问题,这就是我如何解决它。

  1. 将要复制的数据库URL设置为管道的基础应用程序上的环境变量。 在我的情况下,这是STAGING_DATABASE_URL url格式为postgresql://username:password@host:port/db_name

  2. app.json文件中,确保复制该变量。

  3. app.json配置一个新数据库,该数据库将设置DATABASE_URL环境变量。

  4. 使用以下脚本复制数据库pg_dump $STAGING_DATABASE_URL | psql $DATABASE_URL pg_dump $STAGING_DATABASE_URL | psql $DATABASE_URL

这是我的app.json文件供参考:

{
  "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"
    }
  ]
}

另一种方法是在审核应用之间共享数据库。 您可以在app.json文件中继承DATABASE_URL

PS:这对我的情况来说足够了,这是一个小团队,请记住,对你来说可能还不够。 并且,我保持我的生产和测试(或暂存,或开发,无论你怎么称呼)数据分开。

或者:使用pg_restore的另一个解决方案,感谢https://gist.github.com/Kalagan/1adf39ffa15ae7a125d02e86ede04b6f

{
  "scripts": {
    "postdeploy": "pg_dump -Fc $DATABASE_URL_TO_COPY | pg_restore --clean --no-owner -n public -d $DATABASE_URL && bundle exec rails db:migrate"
  }
}

我试图让这个问题解决后遇到问题。 这个postdeploy脚本终于为我工作了:

pg_dump -cOx $STAGING_DATABASE_URL | psql $DATABASE_URL && bundle exec rails db:migrate

我在许多这些响应中看到&& bundle exec rails db:migrate作为postdeploy步骤的一部分。

这实际上应该只是app.jsonrelease部分中的bundle exec rails db:migrate吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM