I use Postgres.app to run a local Postgres server while doing development work and it’s great. Postgres.app basically provides a completely contained pg server that’s ready to go out of the box — just launch the app and you’re good to go.
Unfortunately because it’s a self contained app things are installed in non-standard places.
More specifically, while installing the `pg` gem on a system I recently had it fail with this error:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/mario/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/mario/.rvm/rubies/ruby-2.1.2/bin/ruby --with-pg --without-pg --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib extconf failed, exit code 1
First off this error output is awesome. It clearly states that pg_config is missing and the solution is pretty simple — just pass in the path to Postgres.app’s pg_config.
I solved it by reinstalling the gem using:
➜ my_api git:(feature/add-ember) ✗ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config' This could take a while... Successfully installed pg-0.17.1 1 gem installed
Bam! As you can see the gem installed successfully!