无法使用Ruby连接到Heroku上的PostgreSQL数据库 – 无法翻译主机名

我正在使用Ruby(而不是Rails)并连接PostgreSQL数据库。 我一直试图在Heroku上设置,但是我在启动应用程序时遇到了问题。 在本地运行应用程序运行正常。

我的本地.env看起来像:

postgres://DATABASE_URL=localhost 

并且连接到数据库的Ruby连接如下所示:

 @@db = PGconn.open(:hostaddr => ENV['DATABASE_URL'], :dbname => '(dbname)', :password => '(password)') 

当我推送到Heroku时,应用程序在该行崩溃,并将此错误写入日志:

 could not translate host name "postgres://(my heroku db address)" to address: Name or service not known (PG::Error) 

那里的数据库地址与我的heroku:config中的DATABASE_URL相匹配。 我正在使用共享数据库。

我尝试使用:host => ENV['DATABASE_URL'] (而不是:hostaddr ),但结果相同。 我猜我有一些简单的东西,但是我没有任何好的想法。

您需要解析DATABASE_URL的特定部分。 请参阅https://devcenter.heroku.com/articles/rack#database_access

Heroku的Devcenter似乎不再包含这个,所以这里是如何手动拆分:

  db_parts = ENV['DATABASE_URL'].split(/\/|:|@/) username = db_parts[3] password = db_parts[4] host = db_parts[5] db = db_parts[7] conn = PGconn.open(:host => host, :dbname => db, :user=> username, :password=> password) 

礼貌Grio 。