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 !

Anúncios

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 !