um pluguinho
Posts tagged rails
Novo atributo *_humanize no plugin activerecord_symbolize
Nov 14th
O Cássio do /* CODIFICANDO */, fez um post dando uma dica de como simular uma funcionalidade de enum no ActiveRecord, para trabalhar com uma faixa de valores em um dos atributos do model. Então dei uma dica para ele do plugin activerecord_symbolize, do qual eu já falei por aqui e acabei por contribui com algumas alterações.
Trocando idéia com o Cássio, ele sugeri o método *_str, para facilitar na hora de transformar a propriedade do model em um valor legível para o usuário. Bom, eu já tinha feito está alteração localmente e acabei por esquecer o commit/push dela.
A diferença do que ele sugeriu para o que eu tinha feito é que dei o nome de *_humanize para o método, o que é mais Ruby mod do que _str, com o _str poderia ser confundido com o método to_str. Passamos a ter:
Com isso espero atender melhor aos usuário desse plugin, facilitando na hora de obter o valor que sera mostrado na view.
activerecord_symbolize a solução para o seus problemas
Aug 19th
Um dos erros que cometi quando comecei a desenvolvimento da loja foi usar o tipo enum do banco de dados mysql em algumas tabelas. O erro foi agravado pelo uso do plugin enum-column que adicionar suporte a esse tipo de coluna no ActiveRecord.
O problema se concentra no fato de que o tipo enum não é suportado por todos os bancos de dados, o que impede a migração da aplicação para outro tipos de banco que não sejam mysql. O plugin agrava o problema, não por si só, mas pela falta de atualização.
A partir do Rails 2.0 temos as sexy migration, por isso na criação de uma tabela usamos:
Isso adiciona um coluna do tipo enum no banco de dados, mas atualiza o arquivo schema.rb de forma errada, observe o código abaixo do arquivo schema.rb:
Não existe o método enum para class ActiveRecord::ConnectionAdapters::TableDefinition, o que gera erros quando usamos o schema.rb para criar o banco de dados, o que acontece sempre que rodamos testes por exemplo. A solução para este ultimo problema seria atualizar o plugin, mas ainda sim teríamos o outro problema.
Pensando nisso fui no github atrás de um plugin alternativo, acabei por encontrar o activerecord_symbolize, um plugin que na sua versão básica adiciona o suporte a atribuição de tipos simbólicos as propriedades de um modulo.
Mas lendo a documentação e testando o plugin acabei descobrindo que ele seria pouco para o que queria, por isso fiz um fork do projeto e adicionei algumas características ao plugin. Já fiz um pedido de pull para o projeto original e estou aguardando para ver se minhas modificações são aceitas. Enquanto isso vamos a forma de utiliza-lo.
Para instalar o plugin pode ser fazer o básico:
script/plugin install git://github.com/nuxlli/activerecord_symbolize.git
Na sua tabela usasse tipo string mesmo:
No seu model adicione:
Feito isso, User passa aceitar apenas os valores :female e :male para o atributo gender, gerando um erro de validação caso algum outro valor seja passado, o mesmo acontece com so. Se o symbolize fosse chamado sem a definição de in ele passaria a aceitar qualquer simbolo sem erro de validação.
Um outro recurso que adicionei foi dois helpers para facilitar na hora de criar formulários, ficando assim:
Com isso já se obtém dois campos radios para escolha do gênero e um select para escolha do SO, sendo que suas opções são puxadas diretamente da definição do symbolize.
Para mais informações: activerecord_symbolize
Vamos ajudar na tradução do livro Why’s (Poignant) Guide to Ruby
Jun 24th
Bom pessoa o Carlos Brando pede neste post por ajuda para terminar a tradução do livro Why’s (Poignant) Guide to Ruby.
Quem souber inglês o suficiente e queira participar veja-la como é fácil fazer. Eu não estou ajudando na tradução porque não domino inglês o suficiente o que pode atrapalhar em vez de ajudar, mas estou aqui fazendo minha parte e pedindo ajuda a quem puder, se assim como eu não pode ajudar na tradução, ajude-nos a pedir ajuda
Desenvolvendo Rails em Windows
Apr 10th
Tenho visto em vários lugares as pessoas falando sobre os problemas de desenvolver Rails em Windows, agora que o Rails passou para repositório em Git nem se fala. Um dos principais lugares onde escutei isso foi no Rails Podcast Brasil, mais especificamente no episódio 12.
Os principais problemas apontados pelo pessoal no desenvolvimento são:
- Instalação de gems: Principalmente as gems que dependem de compilação;
- Limitações do shell: É de longa data que desenvolvedores tem problema com Windows por conta do “DOS” embutido nele, nunca foi um shell muito versátil, e se comparado com bash, a coisa ficar ainda pior;
- O git é muito limitado: Ao que parece o git realmente dominou as mentes dos desenvolvedores Rails, o que é bom, mas para quem trabalha com Windows a história parece ser outra, é possível ter ele rodando através de duas opções Cygwin ou Mysgit, eu pessoalmente não gosto de nenhuma das duas soluções, o Cygwin é bom mais é limitado e confuso, o Mysgit sofre do problema anterior.
Minha solução predileta é o uso de uma máquina virtual, pessoalmente eu utilizo VMware Player com Ubuntu Server, é possível utilizar qualquer outra VirtualBox ou Qemu são exemplos, ao meu ver o VMware é o mais fácil de configurar, inclusive já tento várias máquinas virtuais prontas pra baixar. O VirtualBox tem algums problemas de configuração da placa de rede, e o Qemu, mesmo usando kqemu nunca obtive uma qualidade que pudesse se comparar rodando no VMware.
Sei que a solução de virtualização não é para todos, existe muito problemas de performance, principalmente com máquinas com pouco ram. No meu caso tenho um notebook com 1GB de Ram é um processador de 1.83 core 2, a máquina virtual roda sem atrapalhar outras aplicações, claro que não é possível jogar ao mesmo tempo que estou com Firefox aberto e a máquina virtual, inclusive o grande vilão em se tratando de memória tem sido o Firefox. Mas já detectei momentos em que não estava utilizando a máquina virtual e uso de memória do VMware desceu a 29MB, sendo a máquina configurada com 256MB.
Existe diversas formas de se configurar a máquina virtual para trabalhar com Rails, segue os passos de uma configuração simples:
- Baixe o VMware Player;
- Baixe a máquina virtual com o Ubuntu Server já instalado;
- Baixe o putty;
- Baixe o TrayTask que vai esconder sua máquina virtual na barra do relógio [opcional];
- Rode a máquina virtual, log com o usuário notroot e a senha thoughtpolice;
- Verifique o ip da máquina virtual com um ifconfig;
- Agora já é possível acessar a máquina usando o putty;
- De uma olhada neste Howto é veja como configurar o samba no Ubuntu para facilitar o acesso aos arquivos da máquina virtual;
Existem n opções para o roteiro, desde de variação no acesso os arquivos usando servidor de ftp ou o winscp, e mesmo a opção de utilizar o Xming que permite abrir janelas dos programas rodando na máquina virtual como se fosse aplicativos nativos do Windows. E no caso do Putty pode se configurar chaves que permitam logar sem a senha na sua máquina virtual.
A instalação do Rails é fácil quando se esta no Ubuntu, podemos instalar todos os pacotes através do apt ou instalar o Ruby por apt, o gem atrás de tar.gz e depois instalar os gems como se faz normalmente. Existe diversas formulas na internet de como fazer a instalação do Rails no Linux.
Eu pessoalmente acho a solução razoável, visto que a melhor solução é de fato migrar pra Linux. Mas para quem não tem esta opção por um motivo ou outro, fica a dica. Se bem configurado e usando as ferramentas certas é possível trabalhar com total conforto de um ambiente POSIX sem perder as “vantagens” do Windows.
E-commerce em Rails
Feb 16th

Olá a todos, tem sido uma experiência excepcional, meu primeiro projeto em Ruby on Rails, é sistema de e-commerce.
Não vou negar que esta sendo a tarefa mais difícil pela qual já passei na área de desenvolvimento, a experiência de quase 8 anos de desenvolvimento web não tem ajudado muito no quesito codificação. Já é do conhecimento de todos que o Rails ajuda em muito no desenvolvimento, mas como foi dito neste post, Rails ajuda, mas não corrige o problema de maus programadores.
Meu maior desafio em todo o projeto esta sendo e ainda vai ser por um bom tempo os testes automatizados, eu nunca tive prazer de codificar utilizando testes, isso aconteceu em parte por culpa dos prazos apertados, e da falta de conhecimento sobre o assunto.
Neste projeto o prazo continua apertado, para variar um pouco, mas como a decisão de fazer ou não orientado a testes é minha a coisa ficou mais fácil.
O projeto esta longe do fim, mas as coisas tem corrido relativamente bem, os clientes tem aprovado cada fase do projeto, e já estamos com e-commerce funciona. Espero que a partir de agora postar mais coisas sobre a experiência que estou tento construindo este sistema.
Para começo estou pensando em utilizar o RSpec, me parece uma boa opção para teste, apesar de esta aprendendo com relativa facilidade a trabalhar com os teste nativos do Rails, eu ainda os acho acho chatos de formular, o RSpec me parece uma alternativa mais elegante.
Framework Akelos – Primeiras impressões
Oct 27th
Através do site PHP Frameworks, reencontrei um framework PHP, que já tinha visto em outro momento mas não tinha dado muita atenção, o Akelos. O Akelos é o segundo framework mais parecido com Rails na minha opinião, o primeiro é PHP on Trax (até no nome).
Depois de alguns testes rápidos, vamos a uma analise ainda mais rápida sobre o framework.
