If I have a DATABASE_URL, is it possible to connect to it from localhost? I’m using the following code:
db = URI.parse(database_url)
connection = ActiveRecord::Base.establish_connection(
:adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host => db.host,
:username => db.user,
:password => db.password,
:database => db.path[1..-1],
:encoding => 'utf8'
)
When running the code from my pc, I keep getting errors like:
could not connect to server: Connection timed out
Is the server running on host some_host.amazonaws.com and accepting
TCP/IP connections on port 5432?
I’m using the same code to share a database between two apps that are running on Heroku and it works. This leads me to believe that connecting to a Heroku database is restricted unless you perform it from a Heroku host. Is that true?
Indeed SSL is required for outside connections. The underlying postgres adapter can be forced to use SSL with the
sslmode=requireparameter. You can pass arbitrary parameters down from the ActiveRecord connection options, like so:I’ve verified this locally, and here’s a full session showing it work. Please make sure you’re not mistyping anything: