I am trying to get a site set up on Heroku using Sinatra and PostgreSQL. It worked locally (connecting to local database), but after pushing it to Heroku and changing my
PG.connect to reflect that, I get an Internal Server Error the moment a page tries to access the database.
require 'uri' require 'pg' uri = URI.parse(ENV['DATABASE_URL']) def db(uri) begin connection = PG.connect(uri.hostname, uri.port, nil, nil, uri.path[1..-1], uri.user, uri.password) yield(connection) ensure connection.close end end
I am pretty sure these are parsing correctly, because
ENV['DATABASE_URL'] displays the full
postgres://user:[email protected]:port/database information that I'm expecting, and if I do the same in IRB uri.hostname, ui.port, etc all return what's expected .
This is my first time trying to get a site working on Heroku, so I am not even sure how to troubleshoot this. (And I googled for about all of yesterday.)
=== DATABASE_URL Plan: Hobby-dev Status: Available Connections: 0/20 PG Version: 9.4.2 Created: 2015-05-30 19:24 UTC Data Size: 17.7 MB Tables: 5 Rows: 9320/10000 (In compliance, close to row limit) Fork/Follow: Unsupported Rollback: Unsupported
And all the tables show up when when I do
heroku pg:psql <database> from the cli.
Some answers I've seen said to add
database.yml to my root app directory, so:
production: adapter: 'postgresql' database: '<database>' host: ENV['DATABASE_URL'] username: '<username>'
There's probably something simple I'm missing, but I haven't seen a complete guide for Sinatra/PSQL on Heroku - nothing that goes specifically into setting up and connecting to your database. (Everything seems Rails-related.)
(Also, forgive the CSS.)