jpw
jpw

Reputation: 19237

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

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.

Upvotes: 0

Views: 75

Answers (2)

jpw
jpw

Reputation: 19237

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.

Upvotes: 0

Rovel
Rovel

Reputation: 61

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 :)

Upvotes: 0

Related Questions