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

Anúncios

Dica rápida: problema com authlogic + rails 3

Mais uma da série de dicas rápidas, agora referente à um bug com o authlogic e rails 3.

Ao seguir o railscast do Ryan Bates sobre o Authlogic, porém utilizando o rails 3, ao tentar executar o login você irá se deparar com o seguinte erro:

undefined method `to_key' for #

Este erro quer dizer que o UserSession.new está sendo chamado sem passar username e password para ele, isso ocorre porque o esquema de rotas no rails 3 é diferente, causando assim dois problemas:

  1. Primeiro, Authlogic não consegue criar um hash com seu username/password e armazenar em :user_session, logo, params[…] não vai funcionar.
  2. Segundo, Authlogic não sabe qual método REST utilizar para a rotina de autenticação, logo vai falhar ao tentar executar o método create.

A solução que realmente funcionou para mim foi sobrescrever o método to_key no model UserSession(também devemos sobrescrever o persisted?) como a seguir:

def to_key
new_record? ? nil : [ self.send(self.class.primary_key) ]
end

def persisted?
false
end

Utilizei como referência para este post, o seguinte link: Authlogic and Rails 3 solution vale a pena dar uma conferida, lá o autor detalhou mais o erro e também postou outra possível solução(que não rolou aqui para mim).

Abraços e até a próxima !

Dica rápida 2: problema ao instalar a gem mysql

Pessoal, aproveitando o embalo de domingo das dicas rápidas, aqui vai mais uma. O cenário é o seguinte: rails 3 instalado e a necessidade(e preferência) de utilizar o banco de dados mysql; sistema operacional: Mac OS X 10.6.6.

Ao tentar executar bundle install com a gem mysql no Gemfile, ou ao tentar executar gem install, o erro retornado é o seguinte(resumo):

Building native extensions.  This could take a while…

ERROR:  Error installing mysql:

ERROR: Failed to build gem native extension.

Erro detalhado: http://pastie.org/1535589

Com a ajuda de nosso amigo de sempre, o Google e também com as dicas da mensagem de erro também cheguei à conclusão de que a causa do erro foi o fato de a instalação do mysql estar em um local que não foi encontrado ao tentar instalar a gem, logo, a solução foi rodar o comando com uma das opções e obtive sucesso rodando da seguinte maneira:

gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config

Espero que este post ajude outras pessoas além de me ajudar futuramente quando me deparar com este problema, hehe !

Dica Rápida: Verificar se a gem é compatível ao Rails 3

Hoje é dia de dica rápida, ou seja, algo bem útil mas que não necessita de grandes explicações, ou um post extenso.

A dica rápida de hoje serve para aqueles que como eu estão se aventurando na versão mais atualizada do rails e querem saber se a gem a ser utilizada no projeto é compatível com o rails 3. Aliás, esta dica serve para testar também a compatibilidade com jruby e ruby 1.9.

Basta entrar no site railsplugin e procurar pela gem que deseja utilizar, simples assim !

 

Até a próxima !

 

Rails Templates

Estou feliz por voltar a escrever no blog e este é o primeiro post de 2011, falando nisso, feliz 2011 atrasado para todos !

E hoje o assunto a ser tratado é algo que agiliza bastante a rotina de um railer criar novos projetos com o ambiente que prefere. Bom, eu sou um pouco suspeito para falar disto pois sou da escola do Java, onde costumamos perder bastante tempo configurando, isso pelo menos até conhecer o maven e seu famoso arquivo pom.xml, mas mesmo assim sempre tinha algo que dava algum problema e o tempo gasto em configurar um ambiente e um projeto novo era alto demais. Graças a Deus, com o Rails não temos esse problema porque podemos ter um template com gems a serem instaladas, arquivos a serem copiados e configurações a serem feitas.

Eu não poderia escrever este post sem antes citar o Daniel Lopes que é instrutor da e-Genial e ministrou cursos de rails que pude participar em meados de 2010. Em um destes cursos o Daniel citou sobre templates e para darmos uma conferida em seu github. Depois de muito tempo após o curso acabei olhando somente agora este conteúdo e gostei muito, comecei a utilizá-lo em minha rotina e estou aprovando. Se tiverem tempo, dêem uma olhada em meu github, a aplicação que clonei e personalizei, a my_template.

O seu uso é bem simples, se quiser personalizar, basta clonar o projeto e alterar o arquivo template.rb da maneira que quiser, poderá também alterar os arquivos que deseja incluir em seus futuros projetos. Se preferir utilizar direto do github, pode usar:

rails new app -m github.com/danielvlopes/base_app/raw/master/template.rb

ou:

rails new app -m github.com/mvoto/my_template/raw/master/template.rb

Para resumir, templates facilitam seu trabalho na hora de criar um novo projeto rails, você não perde tempo instalando gems, nem jogando javascripts, imagens, css e arquivos de layout que costuma jogar em alguns projetos com seus padrões. Recomendo fortemente !

Rails For Zombies: uma maneira fácil, divertida e rápida de aprender Rails

Fantástica !!!

Essa é minha opinião sobre a ideia inovadora da Envylabs. Sim, eles mesmos que já fizeram alguns vídeos inovadores comparando ruby on rails com outras linguagens de desenvolvimento.

A ideia desta vez surpreendeu, se trata um site/tutorial em que o usuário precisa apenas se cadastrar(e entender inglês) para poder aprender Ruby on Rails, ou seja, não precisa instalar nem configurar nada em sua máquina ! Ideal para quem quer aprender qualquer tipo de linguagem ou apenas experimentar para saber se realmente vai se dar bem.

Após criar sua conta, o usuário assiste um vídeo bastante irreverente sobre o tópico de rails a ser abordado e com uma boa pitada de zumbizisse para tornar o aprendizado mais leve e descontraído, após assistir o vídeo o usuário pode fazer o download dos slides ou do vídeo que acabou de assistir e também parte para os exercícios sobre o tópico abordado. Interessante não ?

Acho muito válido para quem quer aprender e até mesmo para quem já tem bons conhecimentos em Rails pois além de descontrair você dá uma reforçada legal nos tópicos básicos !

Recomendo fortemente que vocês comam um pouco de cérebro !

JQuery Grid – Rails Plugin

Iae pessoal, eu gostaria de escrever um post sobre TDD ou um sobre o Git, mas infelizmente ainda não estou com conhecimentos suficientes para escrever algo aqui, ainda estou assistindo ao screencast do Akita sobre Git e pretendo ainda desenvolver um site pequeno porém 100% TDD.

Bom, como quem não tem cão, caça com gato, vou escrever aqui sobre um plugin que utilizei estes dias e recomendo para quem precisa de um grid para Rails: é o JQuery Grid da 2dconcept. O uso deste plugin é bem simples, não tive problema algum para utilizá-lo, apenas segui o guia de referência da própria 2dconcept: http://www.2dconcept.com/jquery-grid-rails-plugin e fiz algumas customizações.

O grid é bem completo, atendeu bem minhas necessidades(que eram básicas) e como podem ver no exemplo possui funcionalidades como: alterar os registros, ordenar, incluir novos registros, filtrar e paginar.

É válido lembrar que pode ser facilmente traduzido, pois o plugin já vem com uma pasta i18n com vários arquivos js de locales diferentes.

Este post fica apenas como dica, já que não há nenhum bug ou dificuldade para que seja postado aqui.