6

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

我的本地 .env 看起来像:

postgres://DATABASE_URL=localhost

连接数据库的 Ruby connect 如下所示:

@@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)

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

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

4

2 回答 2

7

您需要解析出DATABASE_URL. 请参阅https://devcenter.heroku.com/articles/rack#database_access

于 2012-07-08T04:05:04.667 回答
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)

礼貌格里奥

于 2014-02-23T11:20:43.027 回答