为 Sinatra 应用程序连接到现有的 Heroku Postgres DB

Connecting to existing Heroku Postgres DB for Sinatra app

我正在为我的 CRM 使用 Salesforce,但需要查询基于 Heroku 的 Sinatra 应用程序的数据(多条记录,因此没有 Zapier)。 Heroku 提供了一项服务,可以定期将 Salesforce 对象复制到 Postgres 表中,从而从 Salesforce 中获取我的数据。

我之前编写过一个 Sinatra 应用程序并将其托管在 Heroku 上,因此我有点熟悉在本地设置开发数据库然后通过许多教程将其推送到生产环境的过程。但是,我 运行 遇到了一个问题,找不到任何信息可以让我连接到现有的生产 Postgres 数据库,该数据库已经填充了我需要的数据,而无需创建和连接到本地开发数据库.

Heroku 为我提供了以下内容

我如何以及在何处安全地插入这些不同的凭据,以便我的以下文件具有连接到表 Venue__c 和 Spaces__c 的正确信息?
app.rb
/配置
- database.yml
- environments.rb

假设您有 ActiveRecord,这应该只是正确配置您的 database.yml 的情况。例如,要直接连接您的开发环境,请使用类似:

# database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: your_database
  username: your_user
  password: your_password
  host: your_host
  port: your_port

# or alternatively, using the URI
development:
  url: postgres://your_user:your_password@your_host/your_database

Heroku 通过环境变量中的 URL 向您发布您的数据库凭据。您应该可以通过 ENV.fetch("DATABASE_URL") 访问它。根据您的 ORM,您将使用不同的方式连接到您的数据库,例如Sequel 可以直接使用这个值作为 Sequel.connect(ENV.fetch("DATABASE_URL")).

的参数

您似乎使用 ActiveRecord,您可以按照 this post 中的建议使用 ActiveRecord::Base.establish_connection(...),它还举例说明了如何解析 URL(这可能不是必需的了)。这不会直接转换为 database.yml,但由于您不打算使用 Rails,因此您必须提供自己的 environment.rb 版本或类似版本,这应该很容易在那个地方做。

原来 Heroku 有一个很棒的教程,它不仅连接到复制的数据库,而且也是为 Sinatra 编写的。

https://devcenter.heroku.com/articles/getting-started-with-heroku-and-connect-without-local-dev#introduction