连接到现有的Heroku Postgres DB for Sinatra app

时间:2017-03-24 20:23:07

标签: ruby postgresql heroku salesforce sinatra-activerecord

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

我之前编写了一个Sinatra应用程序并将其托管在Heroku上,所以我对在本地设置dev db然后通过许多教程将其推向生产的过程有点熟悉。但是,我遇到了一个问题,发现任何信息都可以让我连接到已经填充了我需要的数据的现有生产Postgres DB,而不需要创建并连接到本地dev db。

Heroku为我提供以下内容 enter image description here

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

3 个答案:

答案 0 :(得分:3)

假设您有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

答案 1 :(得分:0)

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版本或某些此类版本,并且应该很容易在该位置执行

答案 2 :(得分:0)

原来Heroku有一个很棒的教程,不仅可以连接到复制的数据库,还可以为Sinatra编写。

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