Diminuindo o tempo de instalação das Gems

Posted by André Ribeiro Camargo Wed, 28 Jul 2010 11:31:00 GMT

Dica legal: Faster Ruby Gems installs

Normalmente eu passava—no-rdoc—no-ri pela linha de comando mesmo.

Posted in , ,

Typical website evolution...

Posted by André Ribeiro Camargo Tue, 27 Jul 2010 17:16:00 GMT

http://graphjam.com/2010/07/26/funny-graphs-typical-website-evolution/

BOA! :-D

Posted in ,

Acessando o Model da sessão para quem usa ActiveRecordStore

Posted by André Ribeiro Camargo Sun, 25 Jul 2010 20:52:00 GMT

Esta é útil para quem armazena sessões no banco de dados.

Antigamente, para acessar o model bastava “session.model”, agora tem que ser através de “request.env[‘rack.session.record’]”.

Fica a dica…

Posted in ,

O "problema" do parâmetro que contém pontos

Posted by André Ribeiro Camargo Sat, 24 Jul 2010 01:40:00 GMT

Aventura continua, já tenho doze requisições passando no teste de integração do portal. Antes tinha ZERO testes, então, acho que estamos evoluindo rapidamente.

Mas, só passei para avisar aqueles que estão migrando do Rails 1.1.6, para QUALQUER versão superior, sobre o “problema do parâmetro que contém pontos”.

Exemplo:

Aplicação deve processar uma requisição cujo caminho possui pontos, tipo:

/descadastrar/andre@boaideia.inf.br

A rota no Rails 1.1.6 seria:

map.connect "descadastrar/:email", :controller => "controlador", :action => :acao

Para funcionar no Rails3, tem que fazer:

match "descadastrar/:email" => "controlador#acao", :constraints => { :email => /.*/ }

Daí vai funcionar beleza, o “problema” é que apartir da versão 2.0 o Rails utiliza os pontos para escolher o formato da resposta da requisição.

Ai ai, já fazia algumas horas que eu estava procurando entender o motivo pelo qual essa versão 3 me retornava “No route matches”. Coisa triste a ignorância.

PS: NESTE caso, como o parâmetro é um endereço de correio eletrônico, vocês podem até utilizar um regex mais apropriado do que este do exemplo.

Fui!

Posted in , ,

Almejando alcançar o Rails 3

Posted by André Ribeiro Camargo Wed, 21 Jul 2010 13:45:00 GMT

Meu segundo projeto em Rails, o PelotasCenter, está para completar 4 anos em produção. Implementado em Ruby on Rails 1.1.6, está funcionando bem. Não posso me queixar.

Mas, o ecosistema Rails evolui muito rápido, nesses 4 anos muitas ferramentas surgiram ou evoluíram. Atualmente a comunidade vive a expectativa do lançamento da versão 3 do Rails.

Agora que os requisitos dos clientes estão satisfeitos e não tenho mais tanta demanda para implementação de novas funcionalidades, vou me concentrar no trabalho de portar a aplicação dos shoppings para o novo Rails.

Depois de instalar o Beta4, criei uma nova aplicação e comecei a reimplementação da camada de aplicação (não vou mexer no banco de dados).

Gostei do comando “rails”, que agora serve para criar uma nova aplicação, carregar o console, executar generators, levantar o servidor web para desenvolvimento e todas aquelas outras funcionalidades que ficavam no diretório scripts do projeto.

Gostei também do Bundler, vai ajudar bastante aqueles SysOps que não querem aprender Rails e só precisam instalar o projeto em produção.

Achei muito sexy a nova nomenclatura das rotas. Cadastrei a rota raíz do shopping, levantei o WebBrick e acessei a aplicação para ver que dependências precisam ser satisfeitas.

Primeira dependência, relacionada aos plugins… Dependo de vários, isso pode vir a ser uma dor de cabeça, pois alguns deles estão ultrapassados e não foram portados para Rails3.

Mas, “dor de cabeça”? Calma lá, não tenho pressa de fazer isso funcionar, é para ser um aprendizado, que ao ser finalizado vai para produção hehehe

Para I18n no Rails 1.1.6 uso Globalize. Rails3 inclui I18n e vi que o Globalize2 (que parece rodar no Rails3) ainda não suporta todas funcionalidades da versão 1. Bom, não vamos complicar agora, então defini alguns objetos que “simulam” o Globalize1, só para ir adiante. Futuramente eu vejo como migrar pro I18n nativo do rails.

Depois, foi a vez do FileColumn. Sei que é um plugin velhinho, mas supre muito bem minha necessidade. Instalei a versão preparada para Rails 2.2.2 e pelo menos até agora, os helpers estão funcionando. Vamos adiante…

Com isso, já estava conseguindo renderizar a capa do portal, com apenas um problema. hehe

No ERB do Rails3 as Strings são “escapadas” por padrão, depois de instruir meus helpers para usarem html_safe, a coisa começou a ficar com cara de pronto. Ainda falta portar as actions que carregam conteúdo por XHR.

Ah! Alguns recursos não fazem mais parte do Rails e viraram plugins, como: acts_as_list e acts_as_tree. Também instalei o prototype_legacy_helpers.

Agora de tarde, tem mais…

Posted in ,