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

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

我可以手动执行以下操作:

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相关问答推荐

PostgreSQL权限如何工作?需要从表格中 Select 收件箱

在PostgreSQL中是否有与SQLite R*Tree类似功能?

复合索引列的顺序导致不同的计划

如何在PostgreSQL 16中设置&Q;VARSIZE&Q;和&Q;SET_VARSIZE&Q;

时间戳的postgreSQL-to_char如果为零,则不显示微秒

在特定距离内创建点的唯一索引

PostgreSQL中如何在同一行中存储多个与单个值相关的ID?

IF 块中的 CREATE FUNCTION 语句抛出错误,同时运行它自己的作品

是否可以调整 PostgreSQL 中的数组以适应 IN 运算符?

如何在postgresql中按时间查询

PG::UndefinedTable:错误:relation "active_storage_blobs" does not exist

使用 try/except 与 psycopg2 或with closing?

如何禁用 postgresql缓存优化?

获取全文搜索配置语言的完整列表

解释结果中的Recheck Cond是什么意思?

Postgresql:备份所有表 struct ,但只备份少数数据表

避免通过 JPA 将null值插入数据库表

Postgresql 对象 ID 和元组

PostgreSQL - 如何在不同时区呈现日期?

如何为本地 Rails 元素设置 Postgres 数据库?