2012-07-08 16 views
7

Uso Ruby (non Rails) e collegamento a un database PostgreSQL. Ho cercato di essere installato su Heroku, ma ho problemi ad avviare l'applicazione. L'esecuzione dell'applicazione localmente funziona correttamente.Impossibile connettersi al database PostgreSQL su Heroku utilizzando Ruby - impossibile tradurre il nome host

mio .env locale si presenta come:

postgres://DATABASE_URL=localhost 

E Ruby connettersi alla connessione al database si presenta come:

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

Quando spingo a Heroku le app si blocca su quella linea, e scrive questo errore nei registri:

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

L'indirizzo del database corrisponde allo DATABASE_URL nel mio heroku:config. Sto usando un database condiviso.

Ho provato a utilizzare :host => ENV['DATABASE_URL'] (al contrario di :hostaddr) ma ho avuto lo stesso risultato. Immagino che ci sia qualcosa di semplice che mi manca ma non ho avuto buone idee.

+0

Sono riluttante a pubblicare l'indirizzo db heroku perché contiene un nome utente e una password. È nel formato postgres: // (foo) @ (bar) .compute-1.amazonaws.com/ddnhsdgpcy –

risposta

4

Devcenter di Heroku non sembra includere più questo, ecco come fare la scissione 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) 

cortesia Grio.

Problemi correlati