Caso 08 Ruby · Rails · Bibliotecas reutilizáveis
Bibliotecas Ruby: soluções reutilizáveis para problemas de backend
Transformei problemas recorrentes de backend em bibliotecas publicadas. Sou autor de hierarchy-tree, validations-skipper e cascade-deleter, e coautor de parsecs e deep-cloning. Cada uma concentra uma responsabilidade que pode ser reutilizada em outras aplicações.
Contexto
Além de desenvolver aplicações, trabalho em ferramentas que resolvem problemas compartilhados entre sistemas. As cinco gems estão publicadas no RubyGems, com autoria identificada e links para os repositórios.
Problema
Clonar registros relacionados, entender associações ou excluir uma hierarquia envolve mais do que uma operação isolada no banco. É preciso representar as relações e delimitar o comportamento esperado.
Na avaliação de fórmulas, a aplicação Ruby também precisa se comunicar com um núcleo de cálculo em C++.
Minha responsabilidade
Criei hierarchy-tree, validations-skipper e cascade-deleter. Os metadados públicos identificam Victor Cordeiro Costa como autor.
Em parsecs e deep-cloning, a autoria é compartilhada com Nilton Vasques e Beatriz Fagundes. Minha contribuição faz parte desse trabalho coletivo.
Decisão
Concentrar responsabilidades em bibliotecas pequenas permite avaliar a API, os exemplos e os limites de cada operação separadamente da aplicação que as utiliza.
O wrapper Ruby de parsecs conecta a aplicação ao avaliador C++; a versão para navegador é explicada no caso Parsec.
Alternativas e trade-offs
Análise atual, escrita para este site. Não é um registro das alternativas avaliadas na época.
- Uma biblioteca cria um contrato para quem a utiliza. Compatibilidade, documentação e comportamento precisam ser considerados antes de mudar a API.
- Operações que ignoram validações ou removem hierarquias exigem critérios explícitos de uso. A existência de uma gem não dispensa autorização, integridade dos dados ou testes na aplicação.
Implementação
As bibliotecas e os problemas que tratam:
parsecs · coautoria
Avaliação de equações em Ruby por meio de uma extensão nativa ligada à biblioteca C++ baseada em muparserx.
deep-cloning · coautoria
Replicação de conjuntos de registros e suas relações em profundidade.
hierarchy-tree · autoria
Inspeção da hierarquia e das associações de classes ActiveRecord.
validations-skipper · autoria
Controle seletivo das validações que devem ser ignoradas em uma operação.
cascade-deleter · autoria
Exclusão de itens e seus descendentes em uma hierarquia.
Resultado
As cinco gems estão publicadas e podem ser inspecionadas por quem avalia meu trabalho. São exemplos concretos de desenho de APIs Ruby, relações entre modelos e extração de responsabilidades reutilizáveis.