Ruby app no longer able to access remote Heroku Postgres - AFTER installing Postgres.app locally

72 views Asked by At

For months now, a ruby (sinatra) app "foo.rb" on my dev't Mac has been using a remote Heroku-hosted Postgres database.

The app does not use ANY local database, neither in development nor production.

For another project, I installed Postgress.app from Heroku, first removing a very OLD version as recommended, using brew remove postgresql

The next time I ran foo.rb, and tried at access the (remote) database with SomeModel.count, I get the error:

PG::ConnectionBad: FATAL: no pg_hba.conf entry for host , user , database , SSL off

I'm confused why the error shows my devt machine address when the database connection config points to a remote postgres url, and why it says SSL off.

Any thoughts how to get rid of the error? Is there any way to see the PATH to the pg_hba.conf it is complaining about, so I can verify it contains the correct host entries?

(I wonder if the pg gem has its own copy squirreled away somewhere.)

The copies of pg_hba.conf that I can find (in /Library/Application Support/XXXX for both the old and new Postgress.app versions) have the correct (and unchanged) host entries.

2

There are 2 answers

0
jpw On BEST ANSWER

The answer turned out to be:

  1. comment out pg in Gemfile
  2. bundle install
  3. replace pg
  4. bundle install

I suspect when the gem pg is installed, it dynamically establishes some link to postgresql, so if you move postgresql (as I did when I installed Postgres.app) you need to remove the pg gem then re-add it.

4
Rovel On

It looks like your script is trying to connect somewhere that is not properly configured

Things to check in that case:

  1. your database.yml or connection string, DATABASE_URL matches your localhost from postgres.app

  2. is your postgres.app is running and have a db server running (check the elephant icon on the top bar of your osx)

  3. You installed and configured properly the postgres app you need to set the path, you can check by typing psql in a new terminal window, if it runs is ok to go.

Configure your $PATH to use the included command line tools (optional):

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
  1. post your file or part of it in the question, it helps a lot to debug :)