O Rails é uma estrutura compatível com o Rack, centrada no desenvolvimento rápido de aplicações. Infelizmente, a abordagem "tudo pronto a usar" e o comportamento cego à maneira do Rails fazem com que o código da aplicação perca muitas vezes qualidade, tanto em termos de receção (legibilidade) como de funcionamento.
Problemas populares do Rails e do Rails-way
- encaminhamento,
- antes das acções,
- grandes acções nos controladores,
- métodos privados nos controladores,
- mixins utilizados uma vez,
- lógica nas vistas,
- Chamadas de retorno do ActiveRecord,
- Associações,
- "modelos gordos".
Problemas adicionais
- Validações de registos activos,
- implícito sobre explícito,
- abuso de DRY,
- delegações a associações,
- chamadas de serviço em modelos.
Alternativas ao Rails
Quando se trata de Carris no Rubi temos várias alternativas. Outros frameworks baseados em Rack incluem: - Sinatra, – Roda, – Hanami.
O que é que os torna únicos?
Tanto o Sinatra como o Roda oferecem nós uma sintaxe de encaminhamento de blocos, mas o encaminhamento em Sinatra é uma lista e em Roda - uma árvore. Em ambos os frameworks, nós mesmos temos que lidar com a implementação da camada de modelo. No caso do Roda, é uma boa ideia usar a gem Sequel.
O Roda é inspirado no Sinatra. É muito leve por si só, mas tem muitos plugins.
O Hanami é o mais próximo de Carris no que diz respeito aos domínios abrangidos pelo quadro. As diferenças mais importantes em termos de utilização são:
- controladores em Carris vs. acções no Hanami,
- classes/objectos dedicados que tratam um pedido HTTP específico, e não um controlador para acções relacionadas com um recurso específico (modelo),
- camada de modelo baseada em repositórios e entidades, separando a persistência do resto da aplicação, e não o padrão de registo ativo.
A versão 1 do Hanami limita fortemente a utilização da ROM em que se baseia (versão 3, e já é 5), pelo que não vale a pena utilizar a camada de modelos aí proposta. No entanto, como se trata de uma estrutura muito aberta, é muito fácil implementar aí o modelo.
Suplementos para Rails
Vale a pena utilizar soluções que não dependam de Carris e estão mais próximos do "puro" Rubi. As ferramentas mencionadas na apresentação são:
- Sequel (ORM, alternativa ao ActiveRecord),
- ROM (mapeador de objectos),
- bibliotecas dry-rb: dry-validations, dry-system e dry-monads.
A sequela é fácil de colocar numa projetoO sistema é baseado em plugins e também implementa o padrão de registo ativo. Tem melhor suporte de consulta de baixo nível do que o Carris' ActiveRecord.
O ROM utiliza a Sequel, mas o seu conceito consiste em traduzir entre registos na(s) base(s) de dados e Rubi objectos. Tem como objetivo a velocidade e a transformação de dados. Separa claramente a camada de persistência da aplicação.
As bibliotecas dry-rb são ferramentas muito úteis:
- A validação seca é muito fácil de utilizar em projectos de API e permite um grande controlo sobre a correção dos dados recebidos,
- O dry-system requer um pouco de prática e paciência para que os programadores o compreendam, mas permite uma gestão muito flexível das dependências na aplicação e o carregamento isolado de componentes do projeto; se quisermos utilizar esta biblioteca em CarrisPodemos utilizar carris secos,
- As mónadas secas são um conceito difícil na teoria, mas na prática é mais fácil de compreender, o resultado das mónadas pode ser uma óptima maneira de aumentar a legibilidade das código considerando casos específicos em vez de ramificar ifs.
Conclusões
É preferível utilizar Carris para não ter de utilizar Carris um dia.
Fontes
Artigos
Estruturas
Gemas
Especificações
Ler mais:
O que é o Ruby on Jets e como criar uma aplicação com ele?
Vuelendar. Um novo projeto da Codest baseado no Vue.js
O relatório semanal da Codest sobre os melhores artigos de tecnologia. Construindo software para 50 milhões de sockets simultâneos (10)