postgresql - Heroku 评论应用程序 : copy DB to review app

标签 postgresql heroku heroku-toolbelt heroku-postgres

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

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

我可以手动完成:

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

但我无法弄清楚如何将 Heroku 创建的应用程序名称获取到 postdeploy 脚本中。

有人试过这个并且知道如何实现自动化吗?

最佳答案

我遇到了同样的问题,下面是我如何解决的。

  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

这是我的 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"
    }
  ]
}

关于postgresql - Heroku 评论应用程序 : copy DB to review app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293169/

相关文章:

ruby-on-rails - Heroku 上的 Thin vs Unicorn

node.js - 如何更改heroku Nodejs仪表板中的时区?

sql - 将 double 转换为日期格式

mysql - CLOSE_CURSORS_AT_COMMIT 为 postgres 设置,但结果集在提交后保持打开状态

ruby-on-rails - 通过 Heroku Rails 应用程序使用 DNS 和 SMTP 检查进行电子邮件验证

postgresql - Postgres 解释计划对于具有不同值的相同查询是不同的

django - 0.0.0.0 :5000 上的 Heroku Foreman 错误

django - Heroku - 将其声明为 envvar 或定义默认值

postgresql - Hibernate 进行过多查询

ruby-on-rails - 在 Rails 3 中,跟踪给定 RESTful 资源的访问次数的最有效方法是什么?