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

Ale*_*scu 7 ruby postgresql heroku pg

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

我的本地.env看起来像:

postgres://DATABASE_URL=localhost
Run Code Online (Sandbox Code Playgroud)

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

@@db = PGconn.open(:hostaddr => ENV['DATABASE_URL'], :dbname => '(dbname)', :password => '(password)')
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Wil*_*ill 8

你需要解析出的具体部分DATABASE_URL.请参阅https://devcenter.heroku.com/articles/rack#database_access


jpa*_*kal 5

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)
Run Code Online (Sandbox Code Playgroud)

礼貌格里奥