我正在为我的CRM使用Salesforce,但需要为基于Heroku的Sinatra应用程序查询数据(多条记录,因此没有Zapier)。 Heroku提供了一种服务,可以定期将Salesforce对象复制到Postgres表,从而将我的数据从Salesforce中获取。
我之前编写了一个Sinatra应用程序并将其托管在Heroku上,所以我对在本地设置dev db然后通过许多教程将其推向生产的过程有点熟悉。但是,我遇到了一个问题,发现任何信息都可以让我连接到已经填充了我需要的数据的现有生产Postgres DB,而不需要创建并连接到本地dev db。
我如何以及在何处安全地插入这些各种凭证,以便我的以下文件有正确的信息连接到表Venue__c和Spaces__c?
app.rb
/配置
- database.yml
- environments.rb
答案 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编写。