Dica rápida: Como instalar o PostgreSQL no seu Mac OS e as gems para sua aplicação Rails

Olá pessoal !

A dica rápida de hoje visa diminuir a dor de cabeça e agilizar o processo de instalação e configuração do PostgreSQL para que funcione com o Rails em seu ambiente de desenvolvimento.

O primeiro passo, é baixar a versão do PostgreSQL para Mac OS(utilizei o .dmg por questão de praticidade) que pode ser encontrato em: http://www.enterprisedb.com/products-services-training/pgdownload#osx

Após a instalação do .dmg podemos criar uma nova aplicação, aqui usaremos exemplo_pg para exemplificar, então, abra o terminal e digite:

rails new exemplo_pg

Com nossa estrutura no esquema, devemos inserir no Gemfile do projeto a gem ruby-pg que é a responsável pela integração do rails com o postgre. Porém, se tentar executar o comando bundle install, você muito provavelmente obterá uma saída parecida com esta:


Fetching: ruby-pg-0.7.9.2008.01.28.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing ruby-pg:
ERROR: Failed to build gem native extension.


/Users/mauriciovoto/.rvm/rubies/ree-1.8.7-2011.03/bin/ruby extconf.rb
extconf.rb:1: command not found: pg_config --bindir

=========== WARNING ===========

You are building this extension on OS X without setting the
ARCHFLAGS environment variable, and PostgreSQL does not appear
to have been built as a universal binary. If you are seeing this
message, that means that the build will probably fail.

Try setting the environment variable ARCHFLAGS
to '-arch x86_64' before building.

For example:
(in bash) $ export ARCHFLAGS='-arch x86_64'
(in tcsh) % setenv ARCHFLAGS '-arch x86_64'

Then try building again.

===================================
extconf.rb:55: command not found: pg_config --includedir
extconf.rb:52: command not found: pg_config --libdir
checking for main() in -lpq... no
*** 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/mauriciovoto/.rvm/rubies/ree-1.8.7-2011.03/bin/ruby
--with-pgsql-dir
--without-pgsql-dir
--with-pgsql-include
--without-pgsql-include=${pgsql-dir}/include
--with-pgsql-lib
--without-pgsql-lib=${pgsql-dir}/lib
--with-pqlib
--without-pqlib
Could not find PostgreSQL build environment (libraries & headers): Makefile not created

Gem files will remain installed in /Users/mauriciovoto/.rvm/gems/ree-1.8.7-2011.03@gis/gems/ruby-pg-0.7.9.2008.01.28 for inspection.
Results logged to /Users/mauriciovoto/.rvm/gems/ree-1.8.7-2011.03@gis/gems/ruby-pg-0.7.9.2008.01.28/ext/gem_make.out


Para resolver este problema e instalar a gem normalmente, basta executar o seguinte comando:

PATH=$PATH:/Library/PostgreSQL/9.0/bin/ bundle install

E em seu database.yml:

development:
adapter: postgresql
database: sua_base
username: seu_user
password: sua_password
host: localhost
encoding: UTF8

Com isto, ao rodar os comandos rake db:create e db:migrate deverá obter sucesso !

Espero poder contribuir e evitar que muitos tenham os problemas e dificuldades que tive ao executar este procedimento que em tese, deveria ser bem simples. Fiz tentativas com algumas outras gems do postgre, porém sem êxito.

Obs: As versões utilizadas neste post foram:

– Mac OSX 10.6.8

– Rails 3.0.3

– PostgreSQL 9.0.4-1

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s