I'm using Ruby (not Rails) and connecting a PostgreSQL database. I've been trying to get set up on Heroku, but I'm having problems starting the application. Running the application locally works fine.
My local .env looks like:
postgres://DATABASE_URL=localhost
And the Ruby connect to connect to the database looks like:
@@db = PGconn.open(:hostaddr => ENV['DATABASE_URL'], :dbname => '(dbname)', :password => '(password)')
When I push to Heroku the app crashes on that line, and writes this error to the logs:
could not translate host name "postgres://(my heroku db address)" to address: Name or service not known (PG::Error)
The database address there matches the DATABASE_URL
in my heroku:config
. I'm using a shared database.
I tried using :host => ENV['DATABASE_URL']
(as opposed to :hostaddr
) but had the same result. I'm guessing there's something simple I'm missing but I haven't had any good ideas.
Heroku's Devcenter doesn't appear to include this anymore, so here's how to do the split manually:
Courtesy Grio.
You need to parse out the specific parts of the
DATABASE_URL
. Please see https://devcenter.heroku.com/articles/rack#database_access