Recentemente publiquei uma gem chamada ruby_ui_scaffold, um gerador de scaffolds para Rails pensado para quem quer construir aplicações modernas utilizando Phlex e RubyUI desde o início do projeto.
A proposta dela era bastante simples:
Em vez de usar o scaffold tradicional do Rails gerando views em .erb, a ideia era criar aplicações já preparadas para uma arquitetura baseada em componentes Ruby, utilizando Phlex e os componentes do RubyUI.
Mas logo percebi uma questão importante.
E quem já possui uma aplicação Rails existente?
O problema das aplicações legadas
O ruby_ui_scaffold resolve muito bem o cenário de novos projetos.
Com ele, você consegue gerar CRUDs completos com controllers, formulários, tabelas, componentes visuais e toda a estrutura baseada em Phlex desde o primeiro dia.
Mas a realidade é que grande parte da comunidade Rails trabalha em aplicações já existentes.
Aplicações que possuem anos de evolução e centenas de arquivos como estes:
app/views/products/index.html.erb
app/views/users/show.html.erb
app/views/orders/_form.html.erb
E nesse cenário surge uma pergunta natural:
Como migrar uma aplicação já existente para Phlex + RubyUI sem precisar reescrever manualmente toda a camada de views?
Foi exatamente essa pergunta que me levou a criar a próxima gem dessa jornada.
Apresentando o ruby_ui_converter
Se o ruby_ui_scaffold foi criado para ajudar no desenvolvimento de novas aplicações Rails, o ruby_ui_converter nasce como sua continuação natural.
A proposta é simples:
Permitir que aplicações Rails já existentes possam migrar gradualmente seus templates .erb para componentes baseados em Phlex e RubyUI.
Em outras palavras:
-
ruby_ui_scaffold→ cria aplicações novas já utilizando a stack moderna -
ruby_ui_converter→ ajuda aplicações existentes a fazer essa transição
Transformando ERB em componentes Ruby automaticamente
A gem percorre uma pasta de views Rails e converte automaticamente arquivos .erb em componentes Ruby.
Exemplo:
bundle exec ruby_ui_converter convert app/views/users
Resultado:
app/views/users/index.html.erb → app/views/users/index.rb
app/views/users/_user.html.erb → app/views/users/user.rb
A ideia é eliminar o trabalho repetitivo que normalmente existiria nesse processo de migração.
Conversão inteligente para Phlex e RubyUI
O objetivo não era simplesmente transformar HTML em Ruby.
A gem entende padrões comuns do Rails e gera código compatível com Phlex e com componentes RubyUI.
Por exemplo:
Um template tradicional:
<%= link_to "Dashboard", dashboard_path %>
vira automaticamente:
Link(href: dashboard_path) { "Dashboard" }
Partials como:
<%= render "form", product: @product %>
são convertidos para componentes Ruby:
render Views::Products::Form.new(product: @product)
E até estruturas mais complexas como:
form_withcollection_selectcheckboxes- condicionais (
if,unless) - loops (
each) - helpers Rails (
dom_id,button_to,content_for)
são analisadas e convertidas automaticamente.
Migração gradual, sem reescrever tudo
Esse era um requisito importante para mim durante o desenvolvimento.
A gem não modifica os arquivos ERB originais.
Ela gera os novos arquivos Ruby lado a lado.
Isso permite um processo de migração incremental:
- converter apenas uma pasta por vez
- revisar o código gerado
- testar cada tela individualmente
- manter partes da aplicação ainda usando ERB
Sem precisar fazer uma migração radical.
Construindo um ecossistema em torno de RubyUI
Minha ideia com essas gems nunca foi lançar ferramentas isoladas.
O objetivo é construir ferramentas que ajudem a tornar o uso de Phlex e RubyUI cada vez mais acessível dentro do ecossistema Rails.
Hoje essa jornada começa com duas peças complementares:
ruby_ui_scaffold
Para novos projetos.
Cria CRUDs completos utilizando Phlex + RubyUI desde o início.
ruby_ui_converter
Para aplicações existentes.
Ajuda a migrar views tradicionais em ERB para componentes Ruby.
O objetivo final
Tenho explorado bastante a ideia de trazer uma experiência mais moderna de desenvolvimento frontend para aplicações Rails, mas sem abandonar aquilo que sempre gostei no ecossistema Ruby:
Escrever código simples.
Manter produtividade alta.
Continuar trabalhando majoritariamente em Ruby.
Essas gems fazem parte exatamente dessa visão.
Acredito que nos próximos anos veremos cada vez mais aplicações Rails adotando abordagens baseadas em componentes, e quero contribuir para tornar essa transição mais simples.
Se você trabalha com Rails e tem curiosidade em explorar o mundo do Phlex e RubyUI, talvez essas ferramentas possam ajudar nessa jornada.
E isso é só o começo :)
Top comments (0)