2012-07-08 22 views
7

Estoy usando Ruby (no Rails) y estoy conectando una base de datos PostgreSQL. He estado tratando de configurar a Heroku, pero estoy teniendo problemas para iniciar la aplicación. Ejecutar la aplicación localmente funciona bien.No se puede conectar a la base de datos PostgreSQL en Heroku usando Ruby - no se pudo traducir el nombre de host

Mi .env locales se parece a:

postgres://DATABASE_URL=localhost 

Y el Rubí Conectar para conectarse a la base de datos se parece a:

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

Cuando pulso a Heroku la aplicación se bloquea en esa línea, y escribe este error a los registros:

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

la dirección de la base de datos no coincide con el DATABASE_URL en mi heroku:config. Estoy usando una base de datos compartida.

Intenté usar :host => ENV['DATABASE_URL'] (a diferencia de :hostaddr) pero tuve el mismo resultado. Supongo que hay algo simple que me falta, pero no he tenido buenas ideas.

+0

No sé si publicar la dirección heroku db porque contiene un nombre de usuario y una contraseña. Está en el formato postgres: // (foo) @ (barra) .compute-1.amazonaws.com/ddnhsdgpcy –

Respuesta

4

DevCenter de Heroku no parece incluir esto más, así que aquí está cómo hacer la división manualmente:

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) 

Cortesía Grio.

Cuestiones relacionadas