Blog

Instalando la gema 'pg' en Mac OS Maverics Blog

Tags: ruby rails heroku
Recientemente quería deployar una aplicación utilizando Heroku, Heroku utiliza PostgreSQL como servidor de base de datos, por lo tanto debemos instalar la gema "pg" para poder deployar satisfactoriamente.

Lo primero que hice fue agregar la gema al Gemfile de la siguiente manera:
gem 'pg', group: :production
Inmediatamente despues ejecute el siguiente comando para instalar la nueva gema para mi proyecto.
$ bundle install
En un mundo ideal esto sería suficiente y no debería tener ningún problema, pero resulta que esto no es así y lo primero que salió fue el siguiente error.
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/Crysfel/.rvm/rubies/ruby-2.1.1/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
	--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/Crysfel/.rvm/rubies/ruby-2.1.1/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

Gem files will remain installed in /Users/Crysfel/.rvm/gems/ruby-2.1.1@conflicto/gems/pg-0.17.1 for inspection.
Results logged to /Users/Crysfel/.rvm/gems/ruby-2.1.1@conflicto/extensions/x86_64-darwin-13/2.1.0/pg-0.17.1/gem_make.out
Afortunadamente la solución es sencilla, primero necesitamos instalar PostgreSQL en nuestro sistema, hay varias maneras pero la más sencilla y rápida que encontré fue utilizando posgresapp.

Una vez que lo descargas y lo instalas ejecutas el siguiente comando.
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Ahora intentamos nuevamente ejecutar el bundle install y todo debería funcionar perfectamente!

Happy Coding!!

Se el primero en comentar!

Instructor del curso

Crysfel3

Autor: Crysfel Villa

Soy un geek que disfruta crear y compartir cosas en internet! Sígueme en twitter @crysfel