2012-07-08 122 views
7

我使用红宝石(未Rails的)和连接PostgreSQL数据库。我一直试图在Heroku上设置,但我在启动应用程序时遇到问题。在本地运行应用程序正常工作。无法连接到PostgreSQL数据库在Heroku - 无法将主机名

我的地方.ENV样子:

postgres://DATABASE_URL=localhost 

而红宝石连接到连接到数据库的样子:

@@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_URLheroku:config。我正在使用共享数据库。

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

+0

我犹豫后Heroku的数据库地址,因为它包含了用户名和密码。它在格式Postgres的://(富)@(巴).compute-1.amazonaws.com/ddnhsdgpcy – 2012-07-08 03:30:32

回答

4

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