Skip to content
março 23, 2010 / cassiomarques

EnumerateIt: Enumerações simples e poderosas em Ruby

Criei uma pequena gem para resolver um problema que já estava me incomodando a um tempo: Criar enumerations de uma forma que funcionasse em um dos projetos que estou trabalhando. O projeto consiste em migrar uma app legada desktop para web, usando Rails.

O banco de dados dessa app legada é recheado de tabelas que funcionam como enumerações, criando foreign keys pra todo lado. Isso é bom do ponto de vista do banco, pois garante que as coisas não serão bagunçadas quando acessa-se o console do banco diretamente, ou quando permite-se que outra app acesse o banco com permissão de escrita. O problema é ter que usar magic numbers para representar no código cada um dos possíveis valores da enumeração. Também é desperdício fazer joins entre a tabela da enumeration e aquelas que a usam, só pra pegar uma simples descrição ou nome da opção. Pior que tudo isso junto é testar models cujas tabelas possuam FK’s para as tabelas das enumerations: É preciso criar todos os registros possíveis para as enumerations no banco se você não quiser ver um monte de erros dizendo que as constraints foram violadas.

Por isso criei a gem EnumerateIt. Sua forma de uso é bem simples e pode ser vista na documentação do projeto.

Vale dizer que o EnumerateIt funciona com qualquer tipo de classe Ruby e não apenas com classes derivadas do ActiveRecord.

Para instalar, o de sempre: gem install enumerate_it

Sim, eu sei que já existem 89745783 soluções semelhantes para esse problema, mas nenhuma me atendia totalmente. Espero que seja útil para mais alguém :)

2 Comentários

Deixe um comentário
  1. Gustavo Caixeta / mar 23 2010 11:13 am

    Muito legal.
    Utilizei em um projeto recente este:

    http://github.com/jeffp/enumerated_attribute

    Mas vou dar uma olhada no seu tb :)

    []’s

    @gcaixeta

    • cassiomarques / mar 23 2010 2:46 pm

      Oi Gustavo,

      Esse que você postou se parece muito com outro que eu sempre uso também chamado activerecord_symbolize.

      Um dos principais fatores que me fizeram criar o EnumerateIt ao invés de usar esses carinhas foi permitir tanto strings quanto integers como o valor de cada opção. Esses permitem somente strings.

      Abraço!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: