<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vídeos de Ti</title>
    <description>The latest articles on DEV Community by Vídeos de Ti (videosdeti).</description>
    <link>https://dev.to/videosdeti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10245%2F086a6967-7b78-4358-be63-378ccede525a.png</url>
      <title>DEV Community: Vídeos de Ti</title>
      <link>https://dev.to/videosdeti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/videosdeti"/>
    <language>en</language>
    <item>
      <title>🇺🇸 Why You Should Adopt RubyUI in Your Rails Projects (and How Three Gems Can Accelerate Your Journey)</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Sat, 25 Jul 2026 23:31:11 +0000</pubDate>
      <link>https://dev.to/videosdeti/why-you-should-adopt-rubyui-in-your-rails-projects-and-how-three-gems-can-accelerate-your-4hn6</link>
      <guid>https://dev.to/videosdeti/why-you-should-adopt-rubyui-in-your-rails-projects-and-how-three-gems-can-accelerate-your-4hn6</guid>
      <description>&lt;p&gt;Over the past few years, the Ruby on Rails ecosystem has seen a resurgence of server-side UI development. Thanks to projects like &lt;strong&gt;Phlex&lt;/strong&gt;, &lt;strong&gt;Hotwire&lt;/strong&gt;, and &lt;strong&gt;RubyUI&lt;/strong&gt;, it's now possible to build modern, responsive, and highly productive applications without relying on large JavaScript frameworks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RubyUI&lt;/strong&gt; provides a beautiful collection of components built on top of Phlex and Tailwind CSS, offering an experience similar to what shadcn/ui brought to the React ecosystem—but fully embracing the Rails way.&lt;/p&gt;

&lt;p&gt;Like any relatively new technology, however, adopting RubyUI comes with a learning curve. You need to understand how components work, learn their APIs, and discover the best patterns for building real-world applications.&lt;/p&gt;

&lt;p&gt;That's exactly why I created three open-source gems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ruby_ui_converter&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ruby_ui_admin&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one solves a different problem, and together they make adopting RubyUI significantly easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Choose RubyUI?
&lt;/h1&gt;

&lt;p&gt;There are many reasons to adopt RubyUI in your next Rails project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ruby-first Components
&lt;/h2&gt;

&lt;p&gt;Instead of maintaining large ERB templates filled with HTML, you build your UI using Ruby components, making your codebase cleaner, easier to maintain, and more reusable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better Organization
&lt;/h2&gt;

&lt;p&gt;Each component has a single responsibility, making your application easier to understand, test, and evolve over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Seamless Hotwire Integration
&lt;/h2&gt;

&lt;p&gt;RubyUI was designed to work naturally with Hotwire and Stimulus, allowing you to build highly interactive interfaces while keeping rendering on the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modern Design
&lt;/h2&gt;

&lt;p&gt;RubyUI ships with a polished set of components, so you can create professional-looking applications without reinventing common UI elements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Faster Development
&lt;/h2&gt;

&lt;p&gt;Once you're familiar with the ecosystem, building new screens becomes dramatically faster than writing everything manually.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Real Challenge Isn't Installing RubyUI
&lt;/h1&gt;

&lt;p&gt;Installing RubyUI only takes a few minutes.&lt;/p&gt;

&lt;p&gt;The real challenge starts when you begin building an actual application.&lt;/p&gt;

&lt;p&gt;Questions like these quickly appear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do I migrate my existing views?&lt;/li&gt;
&lt;li&gt;What's the best way to structure components?&lt;/li&gt;
&lt;li&gt;How do I build a complete CRUD interface?&lt;/li&gt;
&lt;li&gt;How can I create an admin panel?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These three gems were built to answer exactly those questions.&lt;/p&gt;




&lt;h1&gt;
  
  
  ruby_ui_converter
&lt;/h1&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_converter" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_converter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the biggest obstacles when adopting RubyUI is migrating an existing Rails application.&lt;/p&gt;

&lt;p&gt;Most projects already contain hundreds—or even thousands—of &lt;code&gt;.erb&lt;/code&gt; templates.&lt;/p&gt;

&lt;p&gt;Rewriting every view manually would be incredibly time-consuming.&lt;/p&gt;

&lt;p&gt;That's where &lt;strong&gt;ruby_ui_converter&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;Instead of converting HTML, the gem converts &lt;strong&gt;existing ERB templates into RubyUI components&lt;/strong&gt;, dramatically reducing the amount of repetitive work involved in migrating a project.&lt;/p&gt;

&lt;p&gt;If you're modernizing an existing Rails application, this tool can save you countless hours.&lt;/p&gt;




&lt;h1&gt;
  
  
  ruby_ui_scaffold
&lt;/h1&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_scaffold&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've learned the basics of RubyUI, another question naturally arises:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do I build a complete application with it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most examples available online showcase individual components.&lt;/p&gt;

&lt;p&gt;Real-world applications, however, need much more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;resource listings;&lt;/li&gt;
&lt;li&gt;forms;&lt;/li&gt;
&lt;li&gt;pagination;&lt;/li&gt;
&lt;li&gt;filters;&lt;/li&gt;
&lt;li&gt;navigation;&lt;/li&gt;
&lt;li&gt;full CRUD operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's exactly what &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt; provides.&lt;/p&gt;

&lt;p&gt;It generates complete CRUD interfaces using RubyUI, giving you both a solid starting point for new projects and practical examples of how components work together.&lt;/p&gt;

&lt;p&gt;Whether you're learning RubyUI or bootstrapping a new application, it can significantly increase your productivity.&lt;/p&gt;




&lt;h1&gt;
  
  
  ruby_ui_admin
&lt;/h1&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_admin" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_admin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After generating a few CRUDs, another need usually emerges:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if there were an admin interface built entirely on top of RubyUI?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question led to the creation of &lt;strong&gt;ruby_ui_admin&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is simple: provide a modern administrative foundation built with RubyUI.&lt;/p&gt;

&lt;p&gt;Instead of recreating the same infrastructure for every project, you get a ready-to-use admin layout that includes elements such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;admin layout;&lt;/li&gt;
&lt;li&gt;sidebar;&lt;/li&gt;
&lt;li&gt;header;&lt;/li&gt;
&lt;li&gt;navigation;&lt;/li&gt;
&lt;li&gt;common pages;&lt;/li&gt;
&lt;li&gt;reusable UI components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows you to focus on your application's business logic instead of rebuilding the same administrative interface over and over again.&lt;/p&gt;




&lt;h1&gt;
  
  
  Three Gems, One Ecosystem
&lt;/h1&gt;

&lt;p&gt;Although each gem addresses a different challenge, they complement one another perfectly.&lt;/p&gt;

&lt;p&gt;A typical workflow might look like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use &lt;strong&gt;ruby_ui_converter&lt;/strong&gt; to migrate existing ERB templates.&lt;/li&gt;
&lt;li&gt;Generate new CRUD interfaces with &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Organize everything inside an admin dashboard powered by &lt;strong&gt;ruby_ui_admin&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Together, they dramatically reduce the time required to start and scale a RubyUI-based Rails application.&lt;/p&gt;




&lt;h1&gt;
  
  
  Spend Less Time Learning, More Time Building
&lt;/h1&gt;

&lt;p&gt;Every new library comes with a learning curve.&lt;/p&gt;

&lt;p&gt;You have to read documentation, understand component APIs, and experiment with different patterns before becoming productive.&lt;/p&gt;

&lt;p&gt;These gems shorten that journey.&lt;/p&gt;

&lt;p&gt;Instead of starting from a blank page every time, you work with practical examples, reusable structures, and tools that automate repetitive tasks.&lt;/p&gt;

&lt;p&gt;The result is a much smoother adoption of RubyUI and a far more enjoyable development experience.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;RubyUI is quickly becoming one of the most exciting options for building modern user interfaces in Ruby on Rails with Phlex and Hotwire.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;ruby_ui_converter&lt;/strong&gt;, &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;, and &lt;strong&gt;ruby_ui_admin&lt;/strong&gt; gems were created to make that journey even easier.&lt;/p&gt;

&lt;p&gt;Each one solves a specific challenge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ruby_ui_converter&lt;/strong&gt; helps migrate existing ERB templates into RubyUI components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt; accelerates CRUD development while serving as a learning tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ruby_ui_admin&lt;/strong&gt; provides a ready-made foundation for modern administrative interfaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're planning to adopt RubyUI in your next Rails project, these three gems can save you many hours of repetitive work and help you unlock the full potential of the RubyUI ecosystem from day one.&lt;/p&gt;




&lt;h2&gt;
  
  
  GitHub Repositories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ruby_ui_converter — &lt;a href="https://github.com/jacksonpires/ruby_ui_converter" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_converter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ruby_ui_scaffold — &lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_scaffold&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ruby_ui_admin — &lt;a href="https://github.com/jacksonpires/ruby_ui_admin" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_admin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🇧🇷 Por que adotar RubyUI em seus projetos Rails (e como três gems podem acelerar essa jornada)</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Sat, 25 Jul 2026 23:30:06 +0000</pubDate>
      <link>https://dev.to/videosdeti/por-que-adotar-rubyui-em-seus-projetos-rails-e-como-tres-gems-podem-acelerar-essa-jornada-25l8</link>
      <guid>https://dev.to/videosdeti/por-que-adotar-rubyui-em-seus-projetos-rails-e-como-tres-gems-podem-acelerar-essa-jornada-25l8</guid>
      <description>&lt;p&gt;Nos últimos anos, o ecossistema Ruby on Rails voltou a mostrar toda a sua força no desenvolvimento de interfaces server-side. Com ferramentas como &lt;strong&gt;Phlex&lt;/strong&gt;, &lt;strong&gt;Hotwire&lt;/strong&gt; e &lt;strong&gt;RubyUI&lt;/strong&gt;, tornou-se possível criar aplicações modernas, reativas e altamente produtivas sem depender de frameworks JavaScript complexos.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;RubyUI&lt;/strong&gt; oferece uma biblioteca de componentes construída sobre Phlex e Tailwind CSS, proporcionando uma experiência semelhante ao que o shadcn/ui representa para o ecossistema React, mas totalmente integrada à filosofia do Rails.&lt;/p&gt;

&lt;p&gt;Entretanto, como toda tecnologia relativamente nova, existe uma curva de aprendizado. É preciso entender como os componentes funcionam, aprender sua API e descobrir boas práticas para estruturar aplicações reais.&lt;/p&gt;

&lt;p&gt;Foi justamente pensando nesses desafios que nasceram três gems open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ruby_ui_converter&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ruby_ui_admin&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada uma resolve um problema específico e, juntas, tornam a adoção do RubyUI muito mais simples.&lt;/p&gt;




&lt;h1&gt;
  
  
  Por que escolher RubyUI?
&lt;/h1&gt;

&lt;p&gt;Existem vários motivos para adotar RubyUI em uma aplicação Rails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Componentes escritos em Ruby
&lt;/h2&gt;

&lt;p&gt;Ao invés de misturar grandes blocos de HTML e ERB, você passa a construir interfaces utilizando componentes Ruby, tornando o código muito mais organizado e reutilizável.&lt;/p&gt;

&lt;h2&gt;
  
  
  Melhor organização
&lt;/h2&gt;

&lt;p&gt;Cada componente possui sua própria responsabilidade, facilitando manutenção, testes e evolução da aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Excelente integração com Hotwire
&lt;/h2&gt;

&lt;p&gt;RubyUI foi pensado para trabalhar em conjunto com Hotwire e Stimulus, permitindo criar interfaces extremamente responsivas sem abrir mão da renderização server-side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interface moderna
&lt;/h2&gt;

&lt;p&gt;Você obtém componentes com aparência moderna e consistente sem precisar construir tudo do zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Produtividade
&lt;/h2&gt;

&lt;p&gt;Depois que você domina o ecossistema, criar novas telas passa a ser significativamente mais rápido do que construir toda a interface manualmente.&lt;/p&gt;




&lt;h1&gt;
  
  
  O verdadeiro desafio não é usar RubyUI
&lt;/h1&gt;

&lt;p&gt;Na prática, instalar RubyUI leva apenas alguns minutos.&lt;/p&gt;

&lt;p&gt;O desafio aparece quando você começa a desenvolver uma aplicação real.&lt;/p&gt;

&lt;p&gt;Perguntas como estas são bastante comuns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como converter telas existentes?&lt;/li&gt;
&lt;li&gt;Como escrever componentes corretamente?&lt;/li&gt;
&lt;li&gt;Como montar um CRUD completo?&lt;/li&gt;
&lt;li&gt;Como construir um painel administrativo?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Foi exatamente para responder essas perguntas que essas três gems foram criadas.&lt;/p&gt;




&lt;h1&gt;
  
  
  ruby_ui_converter
&lt;/h1&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_converter" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_converter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma das maiores dificuldades ao adotar RubyUI é migrar aplicações Rails já existentes.&lt;/p&gt;

&lt;p&gt;Normalmente elas possuem centenas (ou milhares) de templates &lt;code&gt;.erb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Reescrever tudo manualmente seria um trabalho enorme.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;ruby_ui_converter&lt;/strong&gt; nasceu justamente para reduzir esse esforço.&lt;/p&gt;

&lt;p&gt;A gem converte &lt;strong&gt;templates ERB em componentes RubyUI&lt;/strong&gt;, acelerando o processo de migração e eliminando boa parte do trabalho repetitivo.&lt;/p&gt;

&lt;p&gt;Isso é especialmente útil quando você deseja modernizar uma aplicação sem precisar reescrever cada tela manualmente.&lt;/p&gt;




&lt;h1&gt;
  
  
  ruby_ui_scaffold
&lt;/h1&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_scaffold&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de aprender alguns componentes, surge uma nova necessidade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Como construir uma aplicação inteira utilizando RubyUI?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A maioria dos exemplos disponíveis mostra apenas componentes isolados.&lt;/p&gt;

&lt;p&gt;Na prática, aplicações possuem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;listagens;&lt;/li&gt;
&lt;li&gt;formulários;&lt;/li&gt;
&lt;li&gt;paginação;&lt;/li&gt;
&lt;li&gt;filtros;&lt;/li&gt;
&lt;li&gt;navegação;&lt;/li&gt;
&lt;li&gt;ações CRUD.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt; gera exatamente esse tipo de estrutura.&lt;/p&gt;

&lt;p&gt;Em poucos minutos você possui um CRUD completo utilizando RubyUI, seguindo boas práticas e servindo como excelente material de estudo.&lt;/p&gt;

&lt;p&gt;Além de acelerar novos projetos, ele também ajuda quem está aprendendo a entender como os componentes trabalham em conjunto.&lt;/p&gt;




&lt;h1&gt;
  
  
  ruby_ui_admin
&lt;/h1&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_admin" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_admin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de criar alguns CRUDs, normalmente surge outra necessidade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;E se existisse um painel administrativo inteiro baseado em RubyUI?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Foi dessa ideia que nasceu o &lt;strong&gt;ruby_ui_admin&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A proposta é fornecer uma base moderna para aplicações administrativas utilizando RubyUI.&lt;/p&gt;

&lt;p&gt;Em vez de começar cada projeto do zero, você passa a contar com uma estrutura pronta contendo elementos como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;layout administrativo;&lt;/li&gt;
&lt;li&gt;sidebar;&lt;/li&gt;
&lt;li&gt;header;&lt;/li&gt;
&lt;li&gt;navegação;&lt;/li&gt;
&lt;li&gt;páginas padrão;&lt;/li&gt;
&lt;li&gt;componentes reutilizáveis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assim, você pode concentrar seus esforços na regra de negócio da aplicação, em vez de gastar tempo recriando a infraestrutura visual de cada projeto.&lt;/p&gt;




&lt;h1&gt;
  
  
  Um ecossistema pensado para trabalhar em conjunto
&lt;/h1&gt;

&lt;p&gt;Embora cada gem resolva um problema diferente, elas se complementam perfeitamente.&lt;/p&gt;

&lt;p&gt;Um fluxo bastante natural seria:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Utilizar o &lt;strong&gt;ruby_ui_converter&lt;/strong&gt; para migrar templates ERB existentes.&lt;/li&gt;
&lt;li&gt;Gerar novos CRUDs utilizando o &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Organizar toda a aplicação dentro de um painel administrativo criado com o &lt;strong&gt;ruby_ui_admin&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esse fluxo reduz significativamente o tempo necessário para iniciar um novo projeto utilizando RubyUI.&lt;/p&gt;




&lt;h1&gt;
  
  
  Menos tempo aprendendo, mais tempo construindo
&lt;/h1&gt;

&lt;p&gt;Aprender uma nova biblioteca sempre exige investimento.&lt;/p&gt;

&lt;p&gt;Você precisa entender a documentação, conhecer os componentes e descobrir quais padrões funcionam melhor.&lt;/p&gt;

&lt;p&gt;Essas três gems reduzem bastante essa curva de aprendizado.&lt;/p&gt;

&lt;p&gt;Em vez de começar sempre do zero, você passa a trabalhar com exemplos reais, estruturas prontas e ferramentas que automatizam tarefas repetitivas.&lt;/p&gt;

&lt;p&gt;O resultado é uma adoção muito mais rápida do RubyUI e uma experiência de desenvolvimento muito mais produtiva.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusão
&lt;/h1&gt;

&lt;p&gt;RubyUI vem se consolidando como uma excelente opção para quem deseja construir interfaces modernas utilizando Ruby on Rails, Phlex e Hotwire.&lt;/p&gt;

&lt;p&gt;As gems &lt;strong&gt;ruby_ui_converter&lt;/strong&gt;, &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt; e &lt;strong&gt;ruby_ui_admin&lt;/strong&gt; surgiram para facilitar ainda mais essa jornada.&lt;/p&gt;

&lt;p&gt;Cada uma resolve um problema específico:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ruby_ui_converter&lt;/strong&gt; ajuda na migração de templates ERB para componentes RubyUI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt; acelera a criação de CRUDs completos e serve como ferramenta de aprendizado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ruby_ui_admin&lt;/strong&gt; oferece uma base pronta para construção de painéis administrativos modernos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você pretende adotar RubyUI em seus próximos projetos, essas três gems podem economizar muitas horas de trabalho e permitir que você aproveite todo o potencial desse ecossistema desde o primeiro dia.&lt;/p&gt;




&lt;h2&gt;
  
  
  Repositórios
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ruby_ui_converter — &lt;a href="https://github.com/jacksonpires/ruby_ui_converter" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_converter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ruby_ui_scaffold — &lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_scaffold&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ruby_ui_admin — &lt;a href="https://github.com/jacksonpires/ruby_ui_admin" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_admin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>frontend</category>
      <category>rails</category>
      <category>ruby</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🇺🇸 What if there was an admin interface built on top of RubyUI? That's how RubyUI Admin was born.</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Fri, 17 Jul 2026 23:53:27 +0000</pubDate>
      <link>https://dev.to/videosdeti/what-if-there-was-an-admin-interface-built-on-top-of-rubyui-thats-how-rubyui-admin-was-born-5ch7</link>
      <guid>https://dev.to/videosdeti/what-if-there-was-an-admin-interface-built-on-top-of-rubyui-thats-how-rubyui-admin-was-born-5ch7</guid>
      <description>&lt;p&gt;We're living in an exciting time for software development.&lt;/p&gt;

&lt;p&gt;With AI, generating code, exploring ideas, and building new projects has never been easier. The old excuse of &lt;em&gt;"that would take too much time"&lt;/em&gt; doesn't really hold anymore.&lt;/p&gt;

&lt;p&gt;If there's a tool you've always wanted but it doesn't exist yet, this is probably the best time to build it.&lt;/p&gt;

&lt;p&gt;That's exactly how &lt;strong&gt;RubyUI Admin&lt;/strong&gt; came to life.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_admin/" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_admin/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For quite some time I've admired projects like Avo and the developer experience they provide for building Rails admin interfaces. At the same time, I was using &lt;strong&gt;RubyUI&lt;/strong&gt;, powered by &lt;strong&gt;Phlex&lt;/strong&gt;, more and more in my own applications.&lt;/p&gt;

&lt;p&gt;Eventually a simple question came to mind:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What if there was an admin dashboard entirely built with RubyUI?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of waiting for someone else to build it, I decided to create it myself.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is RubyUI Admin?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;RubyUI Admin&lt;/strong&gt; is a Rails engine that turns your Active Record models into a complete administration panel.&lt;/p&gt;

&lt;p&gt;With very little configuration, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete CRUD&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;li&gt;Filters&lt;/li&gt;
&lt;li&gt;Named scopes&lt;/li&gt;
&lt;li&gt;Dashboards&lt;/li&gt;
&lt;li&gt;Custom actions&lt;/li&gt;
&lt;li&gt;Bulk actions&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;Built-in i18n (English and Brazilian Portuguese)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is rendered server-side using &lt;strong&gt;RubyUI + Phlex&lt;/strong&gt;, with progressive enhancements powered by &lt;strong&gt;Hotwire (Turbo + Stimulus)&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Your admin becomes part of your application
&lt;/h1&gt;

&lt;p&gt;One of the project's main architectural decisions was to avoid creating yet another isolated UI framework.&lt;/p&gt;

&lt;p&gt;Instead, RubyUI Admin renders your application's own RubyUI components.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the admin follows your application's design system;&lt;/li&gt;
&lt;li&gt;changes to your components are immediately reflected in the admin;&lt;/li&gt;
&lt;li&gt;there's no duplicated UI library to maintain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is an administration panel that truly feels like part of your application.&lt;/p&gt;




&lt;h1&gt;
  
  
  Server-rendered by default
&lt;/h1&gt;

&lt;p&gt;Following the philosophy that has always made Rails productive, RubyUI Admin embraces server-side rendering.&lt;/p&gt;

&lt;p&gt;JavaScript is only there to enhance the experience.&lt;/p&gt;

&lt;p&gt;Everything continues to work even without JavaScript.&lt;/p&gt;

&lt;p&gt;Turbo and Stimulus simply improve interactions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dialogs&lt;/li&gt;
&lt;li&gt;notifications&lt;/li&gt;
&lt;li&gt;tabs&lt;/li&gt;
&lt;li&gt;clickable rows&lt;/li&gt;
&lt;li&gt;small interface enhancements&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Documentation inside your application
&lt;/h1&gt;

&lt;p&gt;One feature I'm particularly proud of is the built-in documentation.&lt;/p&gt;

&lt;p&gt;After mounting the engine, simply visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/admin/docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The gem serves its own documentation as HTML directly inside your application.&lt;/p&gt;

&lt;p&gt;No need to leave your admin panel or search through external documentation while you're developing.&lt;/p&gt;

&lt;p&gt;It's enabled by default during development and can also be exposed in production behind your application's authentication.&lt;/p&gt;




&lt;h1&gt;
  
  
  Current features
&lt;/h1&gt;

&lt;p&gt;RubyUI Admin already includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full CRUD&lt;/li&gt;
&lt;li&gt;Configurable resources&lt;/li&gt;
&lt;li&gt;Rich field catalog&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;li&gt;Filters&lt;/li&gt;
&lt;li&gt;Named scopes&lt;/li&gt;
&lt;li&gt;Dashboards&lt;/li&gt;
&lt;li&gt;Metric cards&lt;/li&gt;
&lt;li&gt;Custom actions&lt;/li&gt;
&lt;li&gt;Bulk actions&lt;/li&gt;
&lt;li&gt;Authorization with Action Policy&lt;/li&gt;
&lt;li&gt;Internationalization&lt;/li&gt;
&lt;li&gt;Multiple generators&lt;/li&gt;
&lt;li&gt;Ruby-based customization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it's still growing.&lt;/p&gt;

&lt;p&gt;Future versions are expected to include advanced association management and additional index view types.&lt;/p&gt;




&lt;h1&gt;
  
  
  Project philosophy
&lt;/h1&gt;

&lt;p&gt;A few principles guided the project from day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everything is Ruby
&lt;/h2&gt;

&lt;p&gt;Resources, policies, filters, dashboards, and actions are just Ruby classes.&lt;/p&gt;

&lt;p&gt;Nothing is hidden behind magic.&lt;/p&gt;

&lt;p&gt;Whenever you need to customize something, you simply extend or override it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Progressive enhancement
&lt;/h2&gt;

&lt;p&gt;The primary goal is to deliver a fully functional application before adding JavaScript.&lt;/p&gt;

&lt;p&gt;This keeps the project robust, maintainable, and closely aligned with modern Rails philosophy.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Design System
&lt;/h2&gt;

&lt;p&gt;Since the admin uses your own RubyUI components, your application maintains a single source of truth for its UI.&lt;/p&gt;

&lt;p&gt;Buttons, dialogs, tables, cards, and every other component are shared across both your application and your admin interface.&lt;/p&gt;




&lt;h1&gt;
  
  
  Getting started
&lt;/h1&gt;

&lt;p&gt;Installing RubyUI Admin is straightforward.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;"ruby_ui_admin"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then mount the engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;mount_ruby_ui_admin&lt;/span&gt; &lt;span class="ss"&gt;at: &lt;/span&gt;&lt;span class="s2"&gt;"/admin"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure authentication and authorization, create your resources, and you're ready to go.&lt;/p&gt;




&lt;h1&gt;
  
  
  Just getting started
&lt;/h1&gt;

&lt;p&gt;RubyUI Admin is already usable today, but this is only the beginning.&lt;/p&gt;

&lt;p&gt;My goal is to build a modern admin solution for Rails applications using RubyUI, while staying true to the Rails, Hotwire, and Phlex ecosystem.&lt;/p&gt;

&lt;p&gt;If you're already using RubyUI, I'd love for you to give it a try.&lt;/p&gt;

&lt;p&gt;Feedback, issues, ideas, and contributions are always welcome.&lt;/p&gt;

&lt;p&gt;I hope this is only the beginning.&lt;/p&gt;

&lt;p&gt;A special thanks to &lt;a href="https://github.com/italomourati" rel="noopener noreferrer"&gt;Ítalo Moura&lt;/a&gt; for helping me test the gem.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ruby</category>
      <category>showdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>🇧🇷 E se existisse uma interface admin baseada na RubyUI? Assim nasceu a RubyUI Admin.</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Fri, 17 Jul 2026 23:51:35 +0000</pubDate>
      <link>https://dev.to/videosdeti/e-se-existisse-uma-interface-admin-baseada-na-rubyui-assim-nasceu-a-rubyui-admin-5fe4</link>
      <guid>https://dev.to/videosdeti/e-se-existisse-uma-interface-admin-baseada-na-rubyui-assim-nasceu-a-rubyui-admin-5fe4</guid>
      <description>&lt;p&gt;Vivemos um momento curioso no desenvolvimento de software.&lt;/p&gt;

&lt;p&gt;Com IA, gerar código, estruturar projetos e até explorar novas ideias nunca foi tão rápido. Aquela desculpa de &lt;em&gt;"isso daria muito trabalho"&lt;/em&gt; simplesmente deixou de existir. Se existe uma ferramenta que você gostaria de usar e ela ainda não existe, talvez este seja o melhor momento para criá-la.&lt;/p&gt;

&lt;p&gt;Foi exatamente assim que nasceu a &lt;strong&gt;RubyUI Admin&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_admin/" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_admin/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Durante algum tempo acompanhei projetos como o Avo e sempre gostei da experiência de construir interfaces administrativas modernas para aplicações Rails. Ao mesmo tempo, comecei a utilizar cada vez mais a &lt;strong&gt;RubyUI&lt;/strong&gt;, baseada em &lt;strong&gt;Phlex&lt;/strong&gt;, para desenvolver interfaces server-side utilizando componentes Ruby.&lt;/p&gt;

&lt;p&gt;Então surgiu a pergunta:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;E se existisse uma interface administrativa totalmente construída sobre a RubyUI?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A resposta foi criar a minha própria.&lt;/p&gt;




&lt;h1&gt;
  
  
  O que é a RubyUI Admin?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;RubyUI Admin&lt;/strong&gt; é uma engine para Ruby on Rails que transforma seus modelos Active Record em uma interface administrativa completa.&lt;/p&gt;

&lt;p&gt;Com poucos arquivos você já possui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRUD completo&lt;/li&gt;
&lt;li&gt;Paginação&lt;/li&gt;
&lt;li&gt;Filtros&lt;/li&gt;
&lt;li&gt;Scopes&lt;/li&gt;
&lt;li&gt;Dashboards&lt;/li&gt;
&lt;li&gt;Ações customizadas&lt;/li&gt;
&lt;li&gt;Ações em lote&lt;/li&gt;
&lt;li&gt;Autorização&lt;/li&gt;
&lt;li&gt;Internacionalização (EN e PT-BR)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tudo isso renderizado no servidor utilizando &lt;strong&gt;RubyUI + Phlex&lt;/strong&gt;, com melhorias progressivas através de &lt;strong&gt;Hotwire (Turbo + Stimulus)&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  A interface faz parte da sua aplicação
&lt;/h1&gt;

&lt;p&gt;Uma das decisões de arquitetura mais importantes do projeto foi não criar mais um framework visual isolado.&lt;/p&gt;

&lt;p&gt;Em vez disso, a RubyUI Admin utiliza os próprios componentes RubyUI da aplicação hospedeira.&lt;/p&gt;

&lt;p&gt;Isso significa que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;o admin acompanha o mesmo Design System da aplicação;&lt;/li&gt;
&lt;li&gt;qualquer customização feita em um componente é refletida automaticamente no admin;&lt;/li&gt;
&lt;li&gt;não existe uma cópia dos componentes para manter sincronizada.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na prática, o painel administrativo deixa de parecer um produto separado e passa a fazer parte da aplicação.&lt;/p&gt;




&lt;h1&gt;
  
  
  Server-side first
&lt;/h1&gt;

&lt;p&gt;Assim como Rails sempre incentivou, a RubyUI Admin aposta em renderização no servidor.&lt;/p&gt;

&lt;p&gt;JavaScript existe apenas para melhorar a experiência.&lt;/p&gt;

&lt;p&gt;Sem JavaScript a aplicação continua funcionando normalmente.&lt;/p&gt;

&lt;p&gt;Turbo e Stimulus entram apenas para tornar algumas interações mais agradáveis, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;modais;&lt;/li&gt;
&lt;li&gt;notificações;&lt;/li&gt;
&lt;li&gt;abas;&lt;/li&gt;
&lt;li&gt;linhas clicáveis;&lt;/li&gt;
&lt;li&gt;pequenas interações da interface.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Documentação dentro da própria aplicação
&lt;/h1&gt;

&lt;p&gt;Uma funcionalidade que gosto bastante é que a própria gem serve sua documentação.&lt;/p&gt;

&lt;p&gt;Depois de montar a engine, basta acessar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/admin/docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Toda a documentação é renderizada como HTML dentro da própria aplicação.&lt;/p&gt;

&lt;p&gt;Isso significa que você pode consultar exemplos sem precisar abrir outra aba do navegador.&lt;/p&gt;

&lt;p&gt;Durante o desenvolvimento ela já vem habilitada e, se desejar, também pode ser disponibilizada em produção protegida pela autenticação da aplicação.&lt;/p&gt;




&lt;h1&gt;
  
  
  Recursos disponíveis
&lt;/h1&gt;

&lt;p&gt;Hoje a RubyUI Admin já oferece:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRUD completo&lt;/li&gt;
&lt;li&gt;Recursos configuráveis&lt;/li&gt;
&lt;li&gt;Catálogo completo de campos&lt;/li&gt;
&lt;li&gt;Paginação&lt;/li&gt;
&lt;li&gt;Filtros&lt;/li&gt;
&lt;li&gt;Scopes&lt;/li&gt;
&lt;li&gt;Dashboards&lt;/li&gt;
&lt;li&gt;Cards de métricas&lt;/li&gt;
&lt;li&gt;Ações customizadas&lt;/li&gt;
&lt;li&gt;Ações em lote&lt;/li&gt;
&lt;li&gt;Policies utilizando Action Policy&lt;/li&gt;
&lt;li&gt;Internacionalização&lt;/li&gt;
&lt;li&gt;Diversos generators&lt;/li&gt;
&lt;li&gt;Customização através de classes Ruby&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E o projeto continua evoluindo.&lt;/p&gt;

&lt;p&gt;Algumas funcionalidades planejadas para versões futuras incluem gerenciamento avançado de associações e novos formatos de visualização.&lt;/p&gt;




&lt;h1&gt;
  
  
  Filosofia do projeto
&lt;/h1&gt;

&lt;p&gt;Desde o início alguns princípios guiaram o desenvolvimento.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tudo é Ruby
&lt;/h2&gt;

&lt;p&gt;Recursos, policies, filtros, dashboards e ações são apenas classes Ruby.&lt;/p&gt;

&lt;p&gt;Nada fica escondido.&lt;/p&gt;

&lt;p&gt;Quando você precisar personalizar algum comportamento, basta sobrescrever ou estender o que desejar.&lt;/p&gt;




&lt;h2&gt;
  
  
  Progressivamente aprimorado
&lt;/h2&gt;

&lt;p&gt;O foco sempre foi entregar uma aplicação funcional antes de adicionar JavaScript.&lt;/p&gt;

&lt;p&gt;Essa abordagem deixa a aplicação mais robusta, simples de manter e muito alinhada com a filosofia atual do Rails.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sem reinventar seu Design System
&lt;/h2&gt;

&lt;p&gt;Ao utilizar RubyUI, a aplicação inteira compartilha os mesmos componentes.&lt;/p&gt;

&lt;p&gt;Você mantém apenas uma implementação de botões, tabelas, diálogos, cards e demais elementos visuais.&lt;/p&gt;




&lt;h1&gt;
  
  
  Instalação
&lt;/h1&gt;

&lt;p&gt;Adicionar a gem é bastante simples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;"ruby_ui_admin"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois monte a engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;mount_ruby_ui_admin&lt;/span&gt; &lt;span class="ss"&gt;at: &lt;/span&gt;&lt;span class="s2"&gt;"/admin"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure a autenticação e autorização e você já pode começar a criar seus recursos.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ainda está no começo
&lt;/h1&gt;

&lt;p&gt;Apesar de já ser perfeitamente utilizável, a RubyUI Admin ainda está em evolução.&lt;/p&gt;

&lt;p&gt;Meu objetivo é construir uma alternativa moderna para aplicações Rails que utilizam RubyUI, mantendo toda a experiência alinhada ao ecossistema Rails, Hotwire e Phlex.&lt;/p&gt;

&lt;p&gt;Se você utiliza RubyUI, acredito que vale a pena experimentar.&lt;/p&gt;

&lt;p&gt;Toda contribuição, feedback e sugestões são muito bem-vindos.&lt;/p&gt;

&lt;p&gt;Espero que esse seja apenas o começo.&lt;/p&gt;

&lt;p&gt;Um agradecimento especial a &lt;a href="https://github.com/italomourati" rel="noopener noreferrer"&gt;Ítalo Moura&lt;/a&gt; que me ajudou com os testes da gem.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ruby</category>
      <category>showdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>🇧🇷 Continuando a jornada com RubyUI: apresentando o ruby_ui_converter</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Sun, 14 Jun 2026 19:09:05 +0000</pubDate>
      <link>https://dev.to/videosdeti/continuando-a-jornada-com-rubyui-apresentando-o-rubyuiconverter-4mj4</link>
      <guid>https://dev.to/videosdeti/continuando-a-jornada-com-rubyui-apresentando-o-rubyuiconverter-4mj4</guid>
      <description>&lt;p&gt;Recentemente publiquei uma gem chamada &lt;strong&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;ruby_ui_scaffold&lt;/a&gt;&lt;/strong&gt;, um gerador de scaffolds para Rails pensado para quem quer construir aplicações modernas utilizando &lt;strong&gt;Phlex&lt;/strong&gt; e &lt;strong&gt;RubyUI&lt;/strong&gt; desde o início do projeto.&lt;/p&gt;

&lt;p&gt;A proposta dela era bastante simples:&lt;/p&gt;

&lt;p&gt;Em vez de usar o scaffold tradicional do Rails gerando views em &lt;code&gt;.erb&lt;/code&gt;, a ideia era criar aplicações já preparadas para uma arquitetura baseada em componentes Ruby, utilizando Phlex e os componentes do RubyUI.&lt;/p&gt;

&lt;p&gt;Mas logo percebi uma questão importante.&lt;/p&gt;

&lt;p&gt;E quem já possui uma aplicação Rails existente?&lt;/p&gt;

&lt;h2&gt;
  
  
  O problema das aplicações legadas
&lt;/h2&gt;

&lt;p&gt;O &lt;code&gt;ruby_ui_scaffold&lt;/code&gt; resolve muito bem o cenário de &lt;strong&gt;novos projetos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Mas a realidade é que grande parte da comunidade Rails trabalha em aplicações já existentes.&lt;/p&gt;

&lt;p&gt;Aplicações que possuem anos de evolução e centenas de arquivos como estes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app/views/products/index.html.erb
app/views/users/show.html.erb
app/views/orders/_form.html.erb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E nesse cenário surge uma pergunta natural:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como migrar uma aplicação já existente para Phlex + RubyUI sem precisar reescrever manualmente toda a camada de views?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Foi exatamente essa pergunta que me levou a criar a próxima gem dessa jornada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apresentando o ruby_ui_converter
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_converter" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_converter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Se o &lt;code&gt;ruby_ui_scaffold&lt;/code&gt; foi criado para ajudar no desenvolvimento de &lt;strong&gt;novas aplicações Rails&lt;/strong&gt;, o &lt;strong&gt;ruby_ui_converter&lt;/strong&gt; nasce como sua continuação natural.&lt;/p&gt;

&lt;p&gt;A proposta é simples:&lt;/p&gt;

&lt;p&gt;Permitir que aplicações Rails já existentes possam migrar gradualmente seus templates &lt;code&gt;.erb&lt;/code&gt; para componentes baseados em Phlex e RubyUI.&lt;/p&gt;

&lt;p&gt;Em outras palavras:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ruby_ui_scaffold&lt;/code&gt; → cria aplicações novas já utilizando a stack moderna&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ruby_ui_converter&lt;/code&gt; → ajuda aplicações existentes a fazer essa transição&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Transformando ERB em componentes Ruby automaticamente
&lt;/h2&gt;

&lt;p&gt;A gem percorre uma pasta de views Rails e converte automaticamente arquivos &lt;code&gt;.erb&lt;/code&gt; em componentes Ruby.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bundle &lt;span class="nb"&gt;exec &lt;/span&gt;ruby_ui_converter convert app/views/users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app/views/users/index.html.erb → app/views/users/index.rb
app/views/users/_user.html.erb → app/views/users/user.rb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia é eliminar o trabalho repetitivo que normalmente existiria nesse processo de migração.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conversão inteligente para Phlex e RubyUI
&lt;/h2&gt;

&lt;p&gt;O objetivo não era simplesmente transformar HTML em Ruby.&lt;/p&gt;

&lt;p&gt;A gem entende padrões comuns do Rails e gera código compatível com Phlex e com componentes RubyUI.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;/p&gt;

&lt;p&gt;Um template tradicional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;link_to&lt;/span&gt; &lt;span class="s2"&gt;"Dashboard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dashboard_path&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vira automaticamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;href: &lt;/span&gt;&lt;span class="n"&gt;dashboard_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"Dashboard"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Partials como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s2"&gt;"form"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;product: &lt;/span&gt;&lt;span class="vi"&gt;@product&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;são convertidos para componentes Ruby:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="no"&gt;Views&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Products&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;product: &lt;/span&gt;&lt;span class="vi"&gt;@product&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E até estruturas mais complexas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;form_with&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;collection_select&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;checkboxes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;condicionais (&lt;code&gt;if&lt;/code&gt;, &lt;code&gt;unless&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;loops (&lt;code&gt;each&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;helpers Rails (&lt;code&gt;dom_id&lt;/code&gt;, &lt;code&gt;button_to&lt;/code&gt;, &lt;code&gt;content_for&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;são analisadas e convertidas automaticamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migração gradual, sem reescrever tudo
&lt;/h2&gt;

&lt;p&gt;Esse era um requisito importante para mim durante o desenvolvimento.&lt;/p&gt;

&lt;p&gt;A gem &lt;strong&gt;não modifica os arquivos ERB originais&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ela gera os novos arquivos Ruby lado a lado.&lt;/p&gt;

&lt;p&gt;Isso permite um processo de migração incremental:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;converter apenas uma pasta por vez&lt;/li&gt;
&lt;li&gt;revisar o código gerado&lt;/li&gt;
&lt;li&gt;testar cada tela individualmente&lt;/li&gt;
&lt;li&gt;manter partes da aplicação ainda usando ERB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sem precisar fazer uma migração radical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Construindo um ecossistema em torno de RubyUI
&lt;/h2&gt;

&lt;p&gt;Minha ideia com essas gems nunca foi lançar ferramentas isoladas.&lt;/p&gt;

&lt;p&gt;O objetivo é construir ferramentas que ajudem a tornar o uso de Phlex e RubyUI cada vez mais acessível dentro do ecossistema Rails.&lt;/p&gt;

&lt;p&gt;Hoje essa jornada começa com duas peças complementares:&lt;/p&gt;

&lt;h3&gt;
  
  
  ruby_ui_scaffold
&lt;/h3&gt;

&lt;p&gt;Para novos projetos.&lt;/p&gt;

&lt;p&gt;Cria CRUDs completos utilizando Phlex + RubyUI desde o início.&lt;/p&gt;

&lt;h3&gt;
  
  
  ruby_ui_converter
&lt;/h3&gt;

&lt;p&gt;Para aplicações existentes.&lt;/p&gt;

&lt;p&gt;Ajuda a migrar views tradicionais em ERB para componentes Ruby.&lt;/p&gt;

&lt;h2&gt;
  
  
  O objetivo final
&lt;/h2&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;p&gt;Escrever código simples.&lt;/p&gt;

&lt;p&gt;Manter produtividade alta.&lt;/p&gt;

&lt;p&gt;Continuar trabalhando majoritariamente em Ruby.&lt;/p&gt;

&lt;p&gt;Essas gems fazem parte exatamente dessa visão.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Se você trabalha com Rails e tem curiosidade em explorar o mundo do Phlex e RubyUI, talvez essas ferramentas possam ajudar nessa jornada.&lt;/p&gt;

&lt;p&gt;E isso é só o começo :)&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>showdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>🇺🇸 Continuing the RubyUI Journey: Introducing ruby_ui_converter</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Sun, 14 Jun 2026 19:07:39 +0000</pubDate>
      <link>https://dev.to/videosdeti/continuing-the-rubyui-journey-introducing-rubyuiconverter-1kpg</link>
      <guid>https://dev.to/videosdeti/continuing-the-rubyui-journey-introducing-rubyuiconverter-1kpg</guid>
      <description>&lt;p&gt;Recently, I released a gem called &lt;strong&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;ruby_ui_scaffold&lt;/a&gt;&lt;/strong&gt;, a Rails scaffold generator designed for developers who want to build modern applications using &lt;strong&gt;Phlex&lt;/strong&gt; and &lt;strong&gt;RubyUI&lt;/strong&gt; from day one.&lt;/p&gt;

&lt;p&gt;The idea behind it was simple:&lt;/p&gt;

&lt;p&gt;Instead of relying on the traditional Rails scaffold that generates &lt;code&gt;.erb&lt;/code&gt; templates, the goal was to create applications already structured around a Ruby component-based architecture powered by Phlex and RubyUI.&lt;/p&gt;

&lt;p&gt;But shortly after releasing it, I realized an important question remained unanswered.&lt;/p&gt;

&lt;p&gt;What about existing Rails applications?&lt;/p&gt;

&lt;h2&gt;
  
  
  The challenge of legacy applications
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ruby_ui_scaffold&lt;/code&gt; works extremely well for &lt;strong&gt;new projects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It allows developers to generate complete CRUD interfaces with controllers, forms, tables, and UI components entirely built with Phlex and RubyUI.&lt;/p&gt;

&lt;p&gt;But the reality is that a huge part of the Rails community works on existing applications.&lt;/p&gt;

&lt;p&gt;Applications that have evolved for years and contain hundreds of files like these:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app/views/products/index.html.erb
app/views/users/show.html.erb
app/views/orders/_form.html.erb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And naturally, this leads to an important question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you migrate an existing Rails application to Phlex + RubyUI without manually rewriting the entire view layer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question led me to build the next step in this journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing ruby_ui_converter
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_converter" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_converter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If &lt;code&gt;ruby_ui_scaffold&lt;/code&gt; was created to help developers build &lt;strong&gt;new Rails applications&lt;/strong&gt; using a modern stack, &lt;strong&gt;ruby_ui_converter&lt;/strong&gt; is its natural continuation.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Allow existing Rails applications to gradually migrate their &lt;code&gt;.erb&lt;/code&gt; templates into Phlex and RubyUI components.&lt;/p&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ruby_ui_scaffold&lt;/code&gt; → helps build new applications with the modern stack from the beginning&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ruby_ui_converter&lt;/code&gt; → helps existing applications transition to that stack&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Automatically converting ERB into Ruby components
&lt;/h2&gt;

&lt;p&gt;The gem recursively scans Rails view folders and automatically converts &lt;code&gt;.erb&lt;/code&gt; templates into Ruby component files.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bundle &lt;span class="nb"&gt;exec &lt;/span&gt;ruby_ui_converter convert app/views/users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app/views/users/index.html.erb → app/views/users/index.rb
app/views/users/_user.html.erb → app/views/users/user.rb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The entire idea is to eliminate the repetitive work that usually comes with large migrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intelligent conversion for Phlex and RubyUI
&lt;/h2&gt;

&lt;p&gt;The goal was never to simply transform HTML into Ruby syntax.&lt;/p&gt;

&lt;p&gt;The gem understands common Rails patterns and generates code compatible with both Phlex and RubyUI.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A traditional Rails template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;link_to&lt;/span&gt; &lt;span class="s2"&gt;"Dashboard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dashboard_path&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gets automatically converted into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;href: &lt;/span&gt;&lt;span class="n"&gt;dashboard_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"Dashboard"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Partials like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="s2"&gt;"form"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;product: &lt;/span&gt;&lt;span class="vi"&gt;@product&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;become Ruby components:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="no"&gt;Views&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Products&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;product: &lt;/span&gt;&lt;span class="vi"&gt;@product&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also understands more complex structures like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;form_with&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;collection_select&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;checkboxes&lt;/li&gt;
&lt;li&gt;conditionals (&lt;code&gt;if&lt;/code&gt;, &lt;code&gt;unless&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;loops (&lt;code&gt;each&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Rails helpers (&lt;code&gt;dom_id&lt;/code&gt;, &lt;code&gt;button_to&lt;/code&gt;, &lt;code&gt;content_for&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and converts them automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gradual migration without rewriting everything
&lt;/h2&gt;

&lt;p&gt;This was one of the most important requirements during development.&lt;/p&gt;

&lt;p&gt;The gem &lt;strong&gt;does not modify the original ERB files&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead, it generates Ruby files alongside them.&lt;/p&gt;

&lt;p&gt;This makes incremental migration possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;convert one folder at a time&lt;/li&gt;
&lt;li&gt;review generated code&lt;/li&gt;
&lt;li&gt;test each screen individually&lt;/li&gt;
&lt;li&gt;keep parts of the application running on ERB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no need for a risky “big bang” migration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building an ecosystem around RubyUI
&lt;/h2&gt;

&lt;p&gt;My goal with these gems has never been to release isolated tools.&lt;/p&gt;

&lt;p&gt;The bigger idea is to create tools that make adopting Phlex and RubyUI easier inside the Rails ecosystem.&lt;/p&gt;

&lt;p&gt;Right now, that journey starts with two complementary pieces.&lt;/p&gt;

&lt;h3&gt;
  
  
  ruby_ui_scaffold
&lt;/h3&gt;

&lt;p&gt;Built for new projects.&lt;/p&gt;

&lt;p&gt;Generate complete CRUD applications using Phlex + RubyUI from the very beginning.&lt;/p&gt;

&lt;h3&gt;
  
  
  ruby_ui_converter
&lt;/h3&gt;

&lt;p&gt;Built for existing applications.&lt;/p&gt;

&lt;p&gt;Help legacy Rails apps migrate traditional ERB views into Ruby components.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger vision
&lt;/h2&gt;

&lt;p&gt;I’ve been spending a lot of time exploring ways to bring a more modern frontend development experience into Rails applications without losing what I have always loved about the Ruby ecosystem.&lt;/p&gt;

&lt;p&gt;Writing simple code.&lt;/p&gt;

&lt;p&gt;Maintaining high productivity.&lt;/p&gt;

&lt;p&gt;Continuing to work primarily in Ruby.&lt;/p&gt;

&lt;p&gt;These gems are part of that vision.&lt;/p&gt;

&lt;p&gt;I believe that over the next few years, we’ll see more Rails applications adopting component-based architectures, and I want to help make that transition easier.&lt;/p&gt;

&lt;p&gt;If you work with Rails and are curious about exploring the world of Phlex and RubyUI, I hope these tools can help you on that journey.&lt;/p&gt;

&lt;p&gt;And this is only the beginning :)&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>showdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>🇺🇸 Learning RubyUI Through Real Applications with `ruby_ui_scaffold`</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Wed, 10 Jun 2026 13:01:57 +0000</pubDate>
      <link>https://dev.to/videosdeti/learning-rubyui-through-real-applications-with-rubyuiscaffold-4mdh</link>
      <guid>https://dev.to/videosdeti/learning-rubyui-through-real-applications-with-rubyuiscaffold-4mdh</guid>
      <description>&lt;p&gt;Building CRUD applications in Ruby on Rails has never been difficult. The challenge begins when we want to create modern, reusable, component-based interfaces without ending up with a mix of ERB templates, helpers, partials, and presentation logic spread across the application.&lt;/p&gt;

&lt;p&gt;Over the past few years, tools like Phlex and RubyUI have introduced a compelling alternative for Rails developers who want a cleaner and more maintainable view layer. However, one challenge remains: getting started.&lt;/p&gt;

&lt;p&gt;How should you structure your views? Which components should you use? How do you build complete CRUD flows with RubyUI?&lt;/p&gt;

&lt;p&gt;To make that journey easier, I built &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_scaffold&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin2sm0km43uw9df9i3pg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin2sm0km43uw9df9i3pg.gif" alt="RubyUI Scaffold" width="600" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ruby_ui_scaffold?
&lt;/h2&gt;

&lt;p&gt;ruby_ui_scaffold is a Rails scaffold generator that creates complete CRUD applications using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby on Rails&lt;/li&gt;
&lt;li&gt;Phlex&lt;/li&gt;
&lt;li&gt;RubyUI&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of generating traditional ERB templates, it produces fully functional Phlex views built with RubyUI components from day one.&lt;/p&gt;

&lt;p&gt;Think of it as a modern alternative to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails g scaffold
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but designed specifically for component-based Rails applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  More than a Scaffold Generator
&lt;/h2&gt;

&lt;p&gt;While the primary goal is to speed up CRUD development, ruby_ui_scaffold also serves as a practical learning tool.&lt;/p&gt;

&lt;p&gt;Every generated resource includes real-world examples of RubyUI components such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Table&lt;/li&gt;
&lt;li&gt;DataTable&lt;/li&gt;
&lt;li&gt;Form&lt;/li&gt;
&lt;li&gt;Input&lt;/li&gt;
&lt;li&gt;Textarea&lt;/li&gt;
&lt;li&gt;Checkbox&lt;/li&gt;
&lt;li&gt;Badge&lt;/li&gt;
&lt;li&gt;Select&lt;/li&gt;
&lt;li&gt;Combobox&lt;/li&gt;
&lt;li&gt;DropdownMenu&lt;/li&gt;
&lt;li&gt;AlertDialog&lt;/li&gt;
&lt;li&gt;DatePicker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of reading documentation and trying to figure out how components fit together, you can study complete working implementations inside your own application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning RubyUI Through Real Code
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges when learning any component library is moving beyond isolated examples.&lt;/p&gt;

&lt;p&gt;For example, generating:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/rails g ruby_ui_scaffold Buddy &lt;span class="se"&gt;\&lt;/span&gt;
  name:string &lt;span class="se"&gt;\&lt;/span&gt;
  email:string &lt;span class="se"&gt;\&lt;/span&gt;
  admin:boolean &lt;span class="se"&gt;\&lt;/span&gt;
  birthday:date
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;automatically creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forms&lt;/li&gt;
&lt;li&gt;Index pages&lt;/li&gt;
&lt;li&gt;Show pages&lt;/li&gt;
&lt;li&gt;Create and update flows&lt;/li&gt;
&lt;li&gt;Delete confirmations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All powered by RubyUI components.&lt;/p&gt;

&lt;p&gt;This provides practical examples that developers can inspect, modify, and learn from immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring Relationships
&lt;/h2&gt;

&lt;p&gt;The generator also supports &lt;code&gt;belongs_to&lt;/code&gt; relationships out of the box.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/rails g ruby_ui_scaffold Book &lt;span class="se"&gt;\&lt;/span&gt;
  title:string &lt;span class="se"&gt;\&lt;/span&gt;
  author:references
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;automatically generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select inputs for small datasets&lt;/li&gt;
&lt;li&gt;Searchable Comboboxes for larger datasets&lt;/li&gt;
&lt;li&gt;Human-friendly relationship rendering&lt;/li&gt;
&lt;li&gt;Eager loading to prevent N+1 queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These generated examples demonstrate how advanced RubyUI components can be used in real applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovering the DataTable Component
&lt;/h2&gt;

&lt;p&gt;Developers looking to explore more advanced UI patterns can enable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--datatable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generates fully featured tables with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Sorting&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;li&gt;Per-page controls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All built around RubyUI's DataTable component.&lt;/p&gt;

&lt;p&gt;For many developers, this becomes one of the easiest ways to understand how to integrate advanced RubyUI features into production applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generate Data and Experiment
&lt;/h2&gt;

&lt;p&gt;The included seed command makes experimentation easy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/rails ruby_ui_scaffold:seed Buddy &lt;span class="nt"&gt;--count&lt;/span&gt; 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using Faker, the generator populates your database with realistic sample data.&lt;/p&gt;

&lt;p&gt;This allows you to test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tables&lt;/li&gt;
&lt;li&gt;Forms&lt;/li&gt;
&lt;li&gt;Search experiences&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;li&gt;Selection components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;under realistic conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Playground for Phlex and RubyUI
&lt;/h2&gt;

&lt;p&gt;Although ruby_ui_scaffold is highly productive, I believe its greatest value lies in education.&lt;/p&gt;

&lt;p&gt;Every generated scaffold becomes a living collection of RubyUI examples that developers can inspect and learn from.&lt;/p&gt;

&lt;p&gt;Rather than starting from a blank page, developers start from a complete application and gradually understand how RubyUI and Phlex work together.&lt;/p&gt;

&lt;p&gt;For teams evaluating RubyUI, this can dramatically shorten the learning curve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;ruby_ui_scaffold was not created to replace learning RubyUI.&lt;/p&gt;

&lt;p&gt;It was created to make that learning process easier.&lt;/p&gt;

&lt;p&gt;By generating real code for real scenarios using real components, the gem helps bridge the gap between documentation and practical application.&lt;/p&gt;

&lt;p&gt;If your goal is to accelerate CRUD development, ruby_ui_scaffold can help.&lt;/p&gt;

&lt;p&gt;If your goal is to learn RubyUI and Phlex through hands-on examples, it may be one of the fastest ways to get started.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🇧🇷 Aprendendo RubyUI na Prática com `ruby_ui_scaffold`</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Wed, 10 Jun 2026 13:00:43 +0000</pubDate>
      <link>https://dev.to/videosdeti/aprendendo-rubyui-na-pratica-com-rubyuiscaffold-9h9</link>
      <guid>https://dev.to/videosdeti/aprendendo-rubyui-na-pratica-com-rubyuiscaffold-9h9</guid>
      <description>&lt;p&gt;Quem trabalha com Ruby on Rails sabe que gerar um CRUD é fácil. O desafio começa quando queremos construir interfaces modernas, consistentes e reutilizáveis sem cair em uma mistura de ERB, helpers, partials e componentes espalhados pela aplicação.&lt;/p&gt;

&lt;p&gt;Nos últimos anos, o ecossistema Rails ganhou ferramentas extremamente interessantes como Phlex e RubyUI, que trazem uma experiência mais orientada a componentes para a camada de apresentação. Porém, para quem está começando, existe uma barreira inicial: como estruturar tudo isso? Quais componentes utilizar? Como conectar formulários, tabelas e ações CRUD usando RubyUI?&lt;/p&gt;

&lt;p&gt;Foi exatamente para reduzir essa curva de aprendizado que desenvolvi a gem &lt;strong&gt;ruby_ui_scaffold&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/ruby_ui_scaffold" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/ruby_ui_scaffold&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftojbj5gj37an4uimet5j.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftojbj5gj37an4uimet5j.gif" alt="RubyUI Scaffold" width="600" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o ruby_ui_scaffold?
&lt;/h2&gt;

&lt;p&gt;O ruby_ui_scaffold é um gerador de scaffold para Rails que cria aplicações CRUD completas utilizando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby on Rails&lt;/li&gt;
&lt;li&gt;Phlex&lt;/li&gt;
&lt;li&gt;RubyUI&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Em vez de gerar views ERB tradicionais, ele produz views escritas em Phlex utilizando componentes RubyUI desde o primeiro momento.&lt;/p&gt;

&lt;p&gt;Na prática, ele funciona como uma alternativa moderna ao tradicional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails g scaffold
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;mas gerando uma interface visual pronta para uso e alinhada com as boas práticas do ecossistema RubyUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mais do que um gerador
&lt;/h2&gt;

&lt;p&gt;Embora o objetivo inicial seja acelerar a criação de CRUDs, o ruby_ui_scaffold acaba se tornando uma excelente ferramenta educacional.&lt;/p&gt;

&lt;p&gt;Ao gerar um recurso, você recebe exemplos reais de utilização de componentes como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Table&lt;/li&gt;
&lt;li&gt;DataTable&lt;/li&gt;
&lt;li&gt;Form&lt;/li&gt;
&lt;li&gt;Input&lt;/li&gt;
&lt;li&gt;Textarea&lt;/li&gt;
&lt;li&gt;Checkbox&lt;/li&gt;
&lt;li&gt;Badge&lt;/li&gt;
&lt;li&gt;Select&lt;/li&gt;
&lt;li&gt;Combobox&lt;/li&gt;
&lt;li&gt;DropdownMenu&lt;/li&gt;
&lt;li&gt;AlertDialog&lt;/li&gt;
&lt;li&gt;DatePicker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Em vez de consultar a documentação e tentar imaginar como cada componente deve ser utilizado, você passa a ter exemplos completos funcionando dentro da sua própria aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aprendendo RubyUI através de código real
&lt;/h2&gt;

&lt;p&gt;Uma das maiores dificuldades ao aprender qualquer biblioteca de componentes é sair dos exemplos isolados e entender como ela funciona em um sistema real.&lt;/p&gt;

&lt;p&gt;Por exemplo, ao gerar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/rails g ruby_ui_scaffold Buddy &lt;span class="se"&gt;\&lt;/span&gt;
  name:string &lt;span class="se"&gt;\&lt;/span&gt;
  email:string &lt;span class="se"&gt;\&lt;/span&gt;
  admin:boolean &lt;span class="se"&gt;\&lt;/span&gt;
  birthday:date
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;o scaffold cria automaticamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formulários completos&lt;/li&gt;
&lt;li&gt;Listagens&lt;/li&gt;
&lt;li&gt;Páginas de detalhes&lt;/li&gt;
&lt;li&gt;Fluxo de criação e edição&lt;/li&gt;
&lt;li&gt;Exclusão com confirmação visual&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tudo utilizando componentes RubyUI.&lt;/p&gt;

&lt;p&gt;Isso permite estudar padrões reais de implementação, em vez de exemplos artificiais.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explorando relacionamentos
&lt;/h2&gt;

&lt;p&gt;Outro aspecto interessante é o suporte automático a associações &lt;code&gt;belongs_to&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ao gerar um relacionamento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/rails g ruby_ui_scaffold Book &lt;span class="se"&gt;\&lt;/span&gt;
  title:string &lt;span class="se"&gt;\&lt;/span&gt;
  author:references
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;o scaffold cria automaticamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selects para pequenas listas&lt;/li&gt;
&lt;li&gt;Comboboxes pesquisáveis para grandes volumes&lt;/li&gt;
&lt;li&gt;Exibição amigável do relacionamento&lt;/li&gt;
&lt;li&gt;Eager loading para evitar N+1 queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Além de acelerar o desenvolvimento, isso mostra na prática como utilizar componentes avançados do RubyUI em cenários reais.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conhecendo o DataTable
&lt;/h2&gt;

&lt;p&gt;Quem deseja explorar componentes mais sofisticados pode utilizar a opção:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--datatable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com ela, o scaffold gera páginas com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Busca&lt;/li&gt;
&lt;li&gt;Ordenação&lt;/li&gt;
&lt;li&gt;Paginação&lt;/li&gt;
&lt;li&gt;Controle de quantidade de registros por página&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tudo baseado no componente DataTable do RubyUI.&lt;/p&gt;

&lt;p&gt;Essa funcionalidade é particularmente útil para quem deseja aprender como implementar tabelas avançadas utilizando RubyUI sem precisar construir tudo do zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gerando dados para experimentar
&lt;/h2&gt;

&lt;p&gt;Outro recurso interessante é o comando de seed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/rails ruby_ui_scaffold:seed Buddy &lt;span class="nt"&gt;--count&lt;/span&gt; 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ele gera dados fictícios utilizando Faker, permitindo que você teste rapidamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tabelas&lt;/li&gt;
&lt;li&gt;Formulários&lt;/li&gt;
&lt;li&gt;Paginação&lt;/li&gt;
&lt;li&gt;Componentes de busca&lt;/li&gt;
&lt;li&gt;Componentes de seleção&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quanto mais dados você gera, mais fácil fica entender o comportamento dos componentes RubyUI em situações reais.&lt;/p&gt;

&lt;h2&gt;
  
  
  Um laboratório para aprender Phlex e RubyUI
&lt;/h2&gt;

&lt;p&gt;Embora a gem seja extremamente útil para acelerar o desenvolvimento, acredito que seu maior valor esteja na capacidade de servir como um laboratório de aprendizado.&lt;/p&gt;

&lt;p&gt;Cada scaffold gerado se transforma em uma coleção de exemplos reais que podem ser estudados, adaptados e reutilizados.&lt;/p&gt;

&lt;p&gt;Se você está começando com RubyUI ou deseja entender como estruturar aplicações Rails utilizando Phlex, o ruby_ui_scaffold pode funcionar como um excelente ponto de partida.&lt;/p&gt;

&lt;p&gt;Em vez de começar com uma página em branco, você começa com uma aplicação funcional e pode evoluir a partir dela, aprendendo os componentes e padrões aos poucos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O ruby_ui_scaffold não pretende substituir o aprendizado do RubyUI. Pelo contrário: ele foi criado para facilitar esse processo.&lt;/p&gt;

&lt;p&gt;Ao gerar código real, utilizando componentes reais e cenários reais, a gem reduz a distância entre a documentação e a aplicação prática.&lt;/p&gt;

&lt;p&gt;Se você quer acelerar seus CRUDs, ótimo.&lt;/p&gt;

&lt;p&gt;Mas se também quer aprender RubyUI e Phlex de forma prática, provavelmente esse é um dos caminhos mais rápidos para começar.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🇺🇸 3 Essential Gems to Eliminate Friction in Your Rails Workflow</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Thu, 04 Jun 2026 21:48:37 +0000</pubDate>
      <link>https://dev.to/videosdeti/3-essential-gems-to-eliminate-friction-in-your-rails-workflow-3fap</link>
      <guid>https://dev.to/videosdeti/3-essential-gems-to-eliminate-friction-in-your-rails-workflow-3fap</guid>
      <description>&lt;p&gt;Anyone who works with Ruby on Rails knows that, despite the framework being incredible for productivity, there are some classic workflow deficiencies that haunt almost every project. &lt;/p&gt;

&lt;p&gt;You are focused on writing code, but suddenly you need to open an external tool like Postman to test a route. Then, you run a complex script to generate a static database diagram. And at the end of the day, you still need to manually update the API documentation, which will inevitably become outdated in the next sprint.&lt;/p&gt;

&lt;p&gt;This constant context switching and manual maintenance generates enormous friction. To cover these deficiencies, I developed three gems that bring these tools &lt;strong&gt;inside&lt;/strong&gt; your application. They are so practical that they quickly become indispensable in any Rails project. Meet each one of them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;rails-api-docs&lt;/code&gt;: The End of Outdated Documentation]
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/rails-api-docs" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-api-docs&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The deficiency:&lt;/strong&gt; API documentation always starts with good intentions, but as the system evolves—new routes, parameters, and response fields—it quickly stops representing reality. Keeping this updated manually is repetitive and frustrating work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; The &lt;code&gt;rails-api-docs&lt;/code&gt; gem solves this by leveraging what Rails already knows. It inspects your routes, controllers (via AST analysis using Prism), and the ActiveRecord schema to automatically generate the first draft of your documentation. Everything is saved in a single YAML file (&lt;code&gt;config/rails-api-docs.yml&lt;/code&gt;), which serves as the single source of truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it is indispensable:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Append-only strategy:&lt;/strong&gt; When adding new routes and running the generator, the gem only appends what's new. Your descriptions, custom examples, and tags are never modified or deleted, making the documentation a living document.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero development friction:&lt;/strong&gt; You edit the YAML in one window and view the updated documentation in the browser at &lt;code&gt;localhost:3000/rails/api-docs&lt;/code&gt; instantly, with no build step required. For production, it exports a single static HTML file without any external dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;rails-http-lab&lt;/code&gt;: Your HTTP Client Right in the App
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/rails-http-lab" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-http-lab&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The deficiency:&lt;/strong&gt; Testing HTTP endpoints usually requires switching to external tools (like Postman or Insomnia) or creating temporary scripts. Besides the loss of focus, these tools live outside your repository and frequently suffer from CORS issues when trying to access internal services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; The &lt;code&gt;rails-http-lab&lt;/code&gt; is a Rails Engine that couples an HTTP request lab inside your own application. By accessing &lt;code&gt;/rails/http-lab&lt;/code&gt;, you have a lightweight interface to test methods, headers, and payloads while visualizing the responses directly in the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it is indispensable:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stays in the Repository:&lt;/strong&gt; Your requests are saved in &lt;code&gt;.bru&lt;/code&gt; format (interchangeable with the Bruno desktop app) inside the project's &lt;code&gt;docs/http-lab/&lt;/code&gt; folder. This means your API tests are version-controlled in Git and can be easily reviewed in Pull Requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No CORS limits:&lt;/strong&gt; Since the requests are executed by the Rails server itself, you don't have CORS problems and can reach internal services transparently.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;code&gt;rails-realtime-erd&lt;/code&gt;: Database Diagrams Always in Sync
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/rails-realtime-erd" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-realtime-erd&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The deficiency:&lt;/strong&gt; Understanding database relationships in a growing project is difficult. Traditional tools generate static diagrams (ERD) that require manual tasks and quickly become outdated as soon as a new migration is executed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; The &lt;code&gt;rails-realtime-erd&lt;/code&gt; gem mounts a route at &lt;code&gt;/rails/erd&lt;/code&gt; that renders your schema diagram in real-time using Mermaid, all processed by Hotwire (Stimulus), without relying on complex JavaScript frameworks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it is indispensable:&lt;/strong&gt; &lt;br&gt;
You will never again need to run a rake step to generate a static image file. The introspection is done on the fly: if you run a migration, just refresh the page to see the new tables and relationships reflected in the diagram immediately. It is excellent for onboarding new developers and keeping a live documentation of your architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;These three tools share the same philosophy: &lt;strong&gt;your code already has the necessary knowledge, and the support tools should live as close to it as possible&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Adopting &lt;code&gt;rails-api-docs&lt;/code&gt;, &lt;code&gt;rails-http-lab&lt;/code&gt;, and &lt;code&gt;rails-realtime-erd&lt;/code&gt; drastically reduces daily friction, eliminating external dependencies and manual rework. With simple installation steps, your development environment will become much more productive, robust, and integrated.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>rails</category>
      <category>ruby</category>
      <category>tooling</category>
    </item>
    <item>
      <title>🇧🇷 3 Gems Indispensáveis para Eliminar as Deficiências do seu Fluxo de Trabalho no Rails</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Thu, 04 Jun 2026 21:47:50 +0000</pubDate>
      <link>https://dev.to/videosdeti/3-gems-indispensaveis-para-eliminar-as-deficiencias-do-seu-fluxo-de-trabalho-no-rails-32mg</link>
      <guid>https://dev.to/videosdeti/3-gems-indispensaveis-para-eliminar-as-deficiencias-do-seu-fluxo-de-trabalho-no-rails-32mg</guid>
      <description>&lt;p&gt;Quem trabalha com Ruby on Rails sabe que, embora o framework seja incrível para a produtividade, existem algumas deficiências clássicas no fluxo de desenvolvimento que assombram quase todo projeto. &lt;/p&gt;

&lt;p&gt;Você está focado escrevendo código, mas de repente precisa abrir uma ferramenta externa como o Postman para testar uma rota. Depois, roda um script complexo para gerar um diagrama estático do banco de dados. E, no fim do dia, ainda precisa atualizar manualmente a documentação da API, que fatalmente ficará defasada na próxima sprint. &lt;/p&gt;

&lt;p&gt;Essa constante alternância de contexto e manutenção manual geram um enorme atrito. Para cobrir essas deficiências, eu desenvolvi três gems que trazem essas ferramentas para &lt;strong&gt;dentro&lt;/strong&gt; da sua aplicação. Elas são tão práticas que rapidamente se tornam indispensáveis em qualquer projeto Rails. Conheça cada uma delas:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;rails-api-docs&lt;/code&gt;: O Fim da Documentação Desatualizada
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/rails-api-docs" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-api-docs&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A deficiência:&lt;/strong&gt; A documentação de API sempre começa com boas intenções, mas conforme o sistema evolui — novas rotas, parâmetros e campos na resposta —, ela rapidamente deixa de representar a realidade. Manter isso atualizado manualmente é um trabalho repetitivo e frustrante.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A solução:&lt;/strong&gt; A gem &lt;code&gt;rails-api-docs&lt;/code&gt; resolve isso aproveitando o que o Rails já sabe. Ela inspeciona suas rotas, controllers (via análise AST usando Prism) e o schema do ActiveRecord para gerar automaticamente o primeiro rascunho da sua documentação. Tudo é salvo em um único arquivo YAML (&lt;code&gt;config/rails-api-docs.yml&lt;/code&gt;), que serve como fonte da verdade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que é indispensável:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Estratégia &lt;em&gt;Append-only&lt;/em&gt;:&lt;/strong&gt; Ao adicionar novas rotas e rodar o gerador, a gem apenas adiciona o que é novo. Suas descrições, exemplos customizados e tags não são apagados, tornando a documentação um documento vivo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero atrito no desenvolvimento:&lt;/strong&gt; Você edita o YAML de um lado e visualiza a documentação atualizada no navegador em &lt;code&gt;localhost:3000/rails/api-docs&lt;/code&gt; instantaneamente, sem etapa de build. Para produção, ela exporta um único arquivo HTML estático, sem dependências externas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;rails-http-lab&lt;/code&gt;: Seu Client HTTP Direto na Aplicação
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/rails-http-lab" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-http-lab&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A deficiência:&lt;/strong&gt; Testar endpoints HTTP geralmente exige alternar para ferramentas externas (como Postman ou Insomnia) ou criar scripts temporários. Além da perda de foco, essas ferramentas vivem fora do seu repositório e frequentemente sofrem com problemas de CORS ao tentar acessar serviços internos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A solução:&lt;/strong&gt; O &lt;code&gt;rails-http-lab&lt;/code&gt; é uma Rails Engine que acopla um laboratório de requisições HTTP dentro da sua própria aplicação. Ao acessar &lt;code&gt;/rails/http-lab&lt;/code&gt;, você tem uma interface leve para testar métodos, headers e payloads visualizando as respostas diretamente no navegador.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que é indispensável:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fica no Repositório:&lt;/strong&gt; As suas requisições são salvas no formato &lt;code&gt;.bru&lt;/code&gt; (compatível com o aplicativo desktop Bruno) dentro da pasta &lt;code&gt;docs/http-lab/&lt;/code&gt; do projeto. Isso significa que os testes da sua API são versionados no Git e podem ser revisados nos Pull Requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sem limites de CORS:&lt;/strong&gt; Como as requisições são executadas pelo próprio servidor Rails, você não tem problemas de CORS e pode alcançar serviços internos de forma transparente.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;code&gt;rails-realtime-erd&lt;/code&gt;: Diagramas de Banco de Dados Sempre Sincronizados
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jacksonpires/rails-realtime-erd" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-realtime-erd&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A deficiência:&lt;/strong&gt; Entender os relacionamentos do banco de dados em um projeto que está crescendo é difícil. As ferramentas tradicionais geram diagramas estáticos (ERD) que exigem tarefas manuais e rapidamente ficam defasados assim que uma nova migration é executada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A solução:&lt;/strong&gt; A gem &lt;code&gt;rails-realtime-erd&lt;/code&gt; monta uma rota em &lt;code&gt;/rails/erd&lt;/code&gt; que renderiza o diagrama do seu schema em tempo real usando o Mermaid, tudo processado pelo Hotwire (Stimulus), sem depender de frameworks JavaScript complexos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que é indispensável:&lt;/strong&gt; &lt;br&gt;
Você nunca mais precisará rodar um passo de rake para gerar um arquivo de imagem estático. A introspecção é feita sob demanda: se você rodar uma migration, basta atualizar a página para ver as tabelas e relacionamentos novos refletidos no diagrama imediatamente. É excelente para o onboarding de novos desenvolvedores e documentação viva da arquitetura.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Essas três ferramentas compartilham a mesma filosofia: &lt;strong&gt;o seu código já possui o conhecimento necessário, e as ferramentas de apoio devem viver o mais próximo possível dele&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Adotar o &lt;code&gt;rails-api-docs&lt;/code&gt;, o &lt;code&gt;rails-http-lab&lt;/code&gt; e o &lt;code&gt;rails-realtime-erd&lt;/code&gt; reduz drasticamente o atrito no dia a dia, eliminando dependências externas e o retrabalho manual. Com passos simples de instalação (basta adicionar ao &lt;code&gt;Gemfile&lt;/code&gt; e rodar um comando), seu ambiente de desenvolvimento se tornará muito mais produtivo, robusto e integrado.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🇺🇸 I Got Tired of Stale API Documentation in Rails — So I Built `rails-api-docs`</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Wed, 03 Jun 2026 12:25:33 +0000</pubDate>
      <link>https://dev.to/videosdeti/i-got-tired-of-stale-api-documentation-in-rails-so-i-built-rails-api-docs-2362</link>
      <guid>https://dev.to/videosdeti/i-got-tired-of-stale-api-documentation-in-rails-so-i-built-rails-api-docs-2362</guid>
      <description>&lt;p&gt;API documentation always starts with good intentions.&lt;/p&gt;

&lt;p&gt;At the beginning of a project, everything is in sync.&lt;/p&gt;

&lt;p&gt;Routes match reality.&lt;/p&gt;

&lt;p&gt;Examples are accurate.&lt;/p&gt;

&lt;p&gt;Parameters make sense.&lt;/p&gt;

&lt;p&gt;Responses reflect exactly what the API returns.&lt;/p&gt;

&lt;p&gt;But as the system evolves, documentation starts falling behind.&lt;/p&gt;

&lt;p&gt;A new route gets added.&lt;/p&gt;

&lt;p&gt;A parameter changes.&lt;/p&gt;

&lt;p&gt;An endpoint gains authentication.&lt;/p&gt;

&lt;p&gt;A response receives new fields.&lt;/p&gt;

&lt;p&gt;And before you realize it, the documentation no longer represents reality.&lt;/p&gt;

&lt;p&gt;If you've worked with Rails APIs for long enough, you've probably experienced this.&lt;/p&gt;

&lt;p&gt;I certainly have.&lt;/p&gt;

&lt;p&gt;And it was exactly that frustration that led me to create &lt;strong&gt;rails-api-docs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/jacksonpires/rails-api-docs" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-api-docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei63b0nvza955aesy8fa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei63b0nvza955aesy8fa.png" alt="Rails API Docs" width="799" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea started with a simple question
&lt;/h2&gt;

&lt;p&gt;Your Rails application already knows a lot.&lt;/p&gt;

&lt;p&gt;It knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your routes&lt;/li&gt;
&lt;li&gt;your controllers&lt;/li&gt;
&lt;li&gt;your parameters&lt;/li&gt;
&lt;li&gt;your models&lt;/li&gt;
&lt;li&gt;your database schema&lt;/li&gt;
&lt;li&gt;your HTTP verbs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So why should documentation always start from scratch?&lt;/p&gt;

&lt;p&gt;Why do we need to manually rewrite information that already exists inside the application?&lt;/p&gt;

&lt;p&gt;The idea behind &lt;code&gt;rails-api-docs&lt;/code&gt; was to leverage the knowledge Rails already has to generate the first draft of the documentation automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow I wanted didn't exist
&lt;/h2&gt;

&lt;p&gt;I didn't want another tool where the workflow looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;edit documentation
→ generate artifacts
→ rebuild
→ restart server
→ validate changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I wanted something closer to the typical Rails development experience:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;edit
→ refresh browser
→ keep working
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's where the core concept of the gem came from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A single editable YAML file that powers both development-time documentation and production-ready documentation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A single source of truth
&lt;/h2&gt;

&lt;p&gt;The entire workflow revolves around a single file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;config/rails-api-docs.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file becomes the source of truth for your documentation.&lt;/p&gt;

&lt;p&gt;From it, the gem generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;live documentation during development&lt;/li&gt;
&lt;li&gt;request examples&lt;/li&gt;
&lt;li&gt;response examples&lt;/li&gt;
&lt;li&gt;documented schemas&lt;/li&gt;
&lt;li&gt;static HTML documentation for production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You update one file.&lt;/p&gt;

&lt;p&gt;Everything else updates automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;First, generate the initial YAML file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails g rails-api-docs:init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The gem automatically inspects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Rails.application.routes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;controllers (via Prism AST analysis)&lt;/li&gt;
&lt;li&gt;ActiveRecord schema&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And creates an initial documentation structure.&lt;/p&gt;

&lt;p&gt;Then start your application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000/rails/api-docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever you modify the YAML file, simply refresh the page.&lt;/p&gt;

&lt;p&gt;No build step.&lt;/p&gt;

&lt;p&gt;No frontend tooling.&lt;/p&gt;

&lt;p&gt;No intermediate process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let the code write the first draft
&lt;/h2&gt;

&lt;p&gt;One of the most interesting parts of this project was using Prism to analyze controllers.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;:password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;:role&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The gem can automatically identify these fields and use them to build the initial documentation structure.&lt;/p&gt;

&lt;p&gt;Combined with ActiveRecord schema information, it can also infer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;field types&lt;/li&gt;
&lt;li&gt;required attributes&lt;/li&gt;
&lt;li&gt;initial examples&lt;/li&gt;
&lt;li&gt;schema metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was never to replace developers.&lt;/p&gt;

&lt;p&gt;The goal was to eliminate repetitive work.&lt;/p&gt;

&lt;p&gt;Let the machine handle what it can already discover.&lt;/p&gt;

&lt;p&gt;And let humans focus on the important part: explaining the API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation updates shouldn't destroy your work
&lt;/h2&gt;

&lt;p&gt;This is probably the feature that frustrated me most in existing approaches.&lt;/p&gt;

&lt;p&gt;You generate documentation.&lt;/p&gt;

&lt;p&gt;Spend time writing descriptions.&lt;/p&gt;

&lt;p&gt;Add examples.&lt;/p&gt;

&lt;p&gt;Organize sections.&lt;/p&gt;

&lt;p&gt;Customize schemas.&lt;/p&gt;

&lt;p&gt;Then you run the generator again.&lt;/p&gt;

&lt;p&gt;And hope nothing gets overwritten.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rails-api-docs&lt;/code&gt; follows an &lt;em&gt;append-only&lt;/em&gt; strategy.&lt;/p&gt;

&lt;p&gt;When you add new routes to your application, simply run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails g rails-api-docs:update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The gem appends only new endpoints.&lt;/p&gt;

&lt;p&gt;Everything you've written remains untouched.&lt;/p&gt;

&lt;p&gt;That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;descriptions&lt;/li&gt;
&lt;li&gt;examples&lt;/li&gt;
&lt;li&gt;tags&lt;/li&gt;
&lt;li&gt;authentication details&lt;/li&gt;
&lt;li&gt;schemas&lt;/li&gt;
&lt;li&gt;section organization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, the documentation becomes a living document rather than a disposable artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Organizing larger APIs with tags
&lt;/h2&gt;

&lt;p&gt;As APIs grow, navigation becomes increasingly important.&lt;/p&gt;

&lt;p&gt;That's why the gem supports tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;auth&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;public&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These tags aren't just labels.&lt;/p&gt;

&lt;p&gt;They also become interactive filters in the generated documentation.&lt;/p&gt;

&lt;p&gt;Clicking a tag instantly filters the navigation to show only endpoints associated with that category.&lt;/p&gt;

&lt;p&gt;This makes large APIs significantly easier to explore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production should be simple
&lt;/h2&gt;

&lt;p&gt;Another important goal was making deployment boring.&lt;/p&gt;

&lt;p&gt;When you're ready to publish the documentation, simply run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rake rails-api-docs:build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public/api-docs.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A single HTML file.&lt;/p&gt;

&lt;p&gt;Everything embedded.&lt;/p&gt;

&lt;p&gt;Inline CSS.&lt;/p&gt;

&lt;p&gt;Inline JavaScript.&lt;/p&gt;

&lt;p&gt;No external dependencies.&lt;/p&gt;

&lt;p&gt;No CDN.&lt;/p&gt;

&lt;p&gt;No Asset Pipeline.&lt;/p&gt;

&lt;p&gt;No JavaScript runtime.&lt;/p&gt;

&lt;p&gt;Just a static file that can be hosted almost anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm not trying to replace OpenAPI
&lt;/h2&gt;

&lt;p&gt;There are excellent OpenAPI and Swagger-based tools available today.&lt;/p&gt;

&lt;p&gt;They solve many problems extremely well.&lt;/p&gt;

&lt;p&gt;The goal of &lt;code&gt;rails-api-docs&lt;/code&gt; is not to replace that ecosystem.&lt;/p&gt;

&lt;p&gt;The idea is different.&lt;/p&gt;

&lt;p&gt;I wanted a solution that allows developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generate documentation from an existing Rails application&lt;/li&gt;
&lt;li&gt;edit everything in YAML&lt;/li&gt;
&lt;li&gt;preview changes instantly&lt;/li&gt;
&lt;li&gt;export a static HTML file&lt;/li&gt;
&lt;li&gt;keep documentation synchronized with minimal effort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's the workflow I was looking for.&lt;/p&gt;

&lt;p&gt;And since I couldn't find exactly what I wanted, I decided to build it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;API documentation should be easy to create and easy to maintain.&lt;/p&gt;

&lt;p&gt;In my experience, generating the first version isn't the hard part.&lt;/p&gt;

&lt;p&gt;Keeping it updated over time is.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rails-api-docs&lt;/code&gt; was created to reduce that friction.&lt;/p&gt;

&lt;p&gt;By inspecting the application to generate a starting point.&lt;/p&gt;

&lt;p&gt;By preserving your customizations over time.&lt;/p&gt;

&lt;p&gt;And by providing an extremely fast feedback loop during development.&lt;/p&gt;

&lt;p&gt;If you'd like to try it out:&lt;/p&gt;

&lt;p&gt;⭐ &lt;a href="https://github.com/jacksonpires/rails-api-docs" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-api-docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, suggestions, and contributions are always welcome.&lt;/p&gt;

</description>
      <category>api</category>
      <category>opensource</category>
      <category>rails</category>
      <category>showdev</category>
    </item>
    <item>
      <title>🇧🇷 Eu Cansei de Documentação de API Desatualizada no Rails — Então Criei a Gem `rails-api-docs`</title>
      <dc:creator>Jackson Pires</dc:creator>
      <pubDate>Wed, 03 Jun 2026 12:24:43 +0000</pubDate>
      <link>https://dev.to/videosdeti/eu-cansei-de-documentacao-de-api-desatualizada-no-rails-entao-criei-a-gem-rails-api-docs-jho</link>
      <guid>https://dev.to/videosdeti/eu-cansei-de-documentacao-de-api-desatualizada-no-rails-entao-criei-a-gem-rails-api-docs-jho</guid>
      <description>&lt;p&gt;Documentação de API sempre começa com boas intenções.&lt;/p&gt;

&lt;p&gt;No início do projeto, tudo está sincronizado.&lt;/p&gt;

&lt;p&gt;As rotas batem com a aplicação.&lt;/p&gt;

&lt;p&gt;Os exemplos estão corretos.&lt;/p&gt;

&lt;p&gt;Os parâmetros fazem sentido.&lt;/p&gt;

&lt;p&gt;As respostas refletem exatamente o que a API retorna.&lt;/p&gt;

&lt;p&gt;Mas conforme o sistema evolui, a documentação começa a ficar para trás.&lt;/p&gt;

&lt;p&gt;Uma nova rota é criada.&lt;/p&gt;

&lt;p&gt;Um parâmetro muda.&lt;/p&gt;

&lt;p&gt;Um endpoint ganha autenticação.&lt;/p&gt;

&lt;p&gt;Uma resposta recebe novos campos.&lt;/p&gt;

&lt;p&gt;E, sem perceber, a documentação deixa de representar a realidade.&lt;/p&gt;

&lt;p&gt;Se você trabalha com APIs em Rails há algum tempo, provavelmente já passou por isso.&lt;/p&gt;

&lt;p&gt;Eu certamente já passei.&lt;/p&gt;

&lt;p&gt;E foi justamente essa frustração que me levou a criar o &lt;strong&gt;rails-api-docs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/jacksonpires/rails-api-docs" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-api-docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei63b0nvza955aesy8fa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei63b0nvza955aesy8fa.png" alt="Rails API Docs" width="799" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A ideia surgiu de uma pergunta simples
&lt;/h2&gt;

&lt;p&gt;Sua aplicação Rails já sabe muita coisa.&lt;/p&gt;

&lt;p&gt;Ela conhece:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;suas rotas&lt;/li&gt;
&lt;li&gt;seus controllers&lt;/li&gt;
&lt;li&gt;seus parâmetros&lt;/li&gt;
&lt;li&gt;seus modelos&lt;/li&gt;
&lt;li&gt;seu schema do banco&lt;/li&gt;
&lt;li&gt;seus verbos HTTP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Então por que a documentação precisa começar sempre do zero?&lt;/p&gt;

&lt;p&gt;Por que precisamos reescrever manualmente informações que já existem dentro da aplicação?&lt;/p&gt;

&lt;p&gt;A ideia por trás do &lt;code&gt;rails-api-docs&lt;/code&gt; foi justamente aproveitar esse conhecimento que o Rails já possui para gerar um primeiro rascunho da documentação automaticamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  O workflow que eu queria não existia
&lt;/h2&gt;

&lt;p&gt;Eu não queria mais uma ferramenta onde o fluxo fosse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;editar documentação
→ gerar artefatos
→ rebuild
→ reiniciar servidor
→ validar alterações
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eu queria algo mais próximo do desenvolvimento Rails tradicional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;editar
→ atualizar navegador
→ continuar trabalhando
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Foi daí que surgiu o conceito central da gem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Um único arquivo YAML editável que gera tanto a documentação em desenvolvimento quanto a documentação de produção.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Uma única fonte da verdade
&lt;/h2&gt;

&lt;p&gt;O fluxo da gem gira em torno de apenas um arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;config/rails-api-docs.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse arquivo é a fonte da verdade para toda a documentação.&lt;/p&gt;

&lt;p&gt;A partir dele a gem gera:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;visualização em tempo real durante o desenvolvimento&lt;/li&gt;
&lt;li&gt;exemplos de requisição&lt;/li&gt;
&lt;li&gt;exemplos de resposta&lt;/li&gt;
&lt;li&gt;schemas documentados&lt;/li&gt;
&lt;li&gt;documentação HTML estática para produção&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você altera um único lugar.&lt;/p&gt;

&lt;p&gt;Todo o resto é atualizado automaticamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona
&lt;/h2&gt;

&lt;p&gt;Primeiro você gera o YAML inicial:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails g rails-api-docs:init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A gem inspeciona automaticamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Rails.application.routes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;controllers (via análise AST usando Prism)&lt;/li&gt;
&lt;li&gt;schema do ActiveRecord&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E cria uma estrutura inicial de documentação.&lt;/p&gt;

&lt;p&gt;Depois basta subir a aplicação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E acessar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000/rails/api-docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sempre que você alterar o YAML, basta atualizar a página.&lt;/p&gt;

&lt;p&gt;Não existe etapa de build durante o desenvolvimento.&lt;/p&gt;

&lt;p&gt;Não existe pipeline frontend.&lt;/p&gt;

&lt;p&gt;Não existe processo intermediário.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deixe o código escrever o primeiro rascunho
&lt;/h2&gt;

&lt;p&gt;Uma das partes mais interessantes do projeto foi utilizar o Prism para analisar controllers.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;:password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;:role&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A gem consegue identificar automaticamente esses campos e utilizá-los para montar a estrutura inicial da documentação.&lt;/p&gt;

&lt;p&gt;Quando combinamos isso com as informações do ActiveRecord, também é possível inferir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tipos dos campos&lt;/li&gt;
&lt;li&gt;obrigatoriedade&lt;/li&gt;
&lt;li&gt;exemplos iniciais&lt;/li&gt;
&lt;li&gt;informações do schema&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O objetivo nunca foi substituir o trabalho do desenvolvedor.&lt;/p&gt;

&lt;p&gt;O objetivo foi eliminar tarefas repetitivas.&lt;/p&gt;

&lt;p&gt;Deixar a máquina fazer aquilo que ela consegue descobrir sozinha.&lt;/p&gt;

&lt;p&gt;E deixar os humanos cuidarem da parte importante: explicar a API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atualizações não deveriam apagar seu trabalho
&lt;/h2&gt;

&lt;p&gt;Essa talvez seja a característica que mais me incomodava em algumas abordagens existentes.&lt;/p&gt;

&lt;p&gt;Você gera documentação.&lt;/p&gt;

&lt;p&gt;Investe tempo escrevendo descrições.&lt;/p&gt;

&lt;p&gt;Adiciona exemplos.&lt;/p&gt;

&lt;p&gt;Organiza seções.&lt;/p&gt;

&lt;p&gt;Personaliza schemas.&lt;/p&gt;

&lt;p&gt;Então roda novamente o gerador.&lt;/p&gt;

&lt;p&gt;E precisa rezar para não perder nada.&lt;/p&gt;

&lt;p&gt;No &lt;code&gt;rails-api-docs&lt;/code&gt; o YAML segue uma estratégia &lt;em&gt;append-only&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Quando você adiciona novas rotas à aplicação basta executar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails g rails-api-docs:update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A gem adiciona apenas os endpoints novos.&lt;/p&gt;

&lt;p&gt;Todo o conteúdo que você escreveu continua intacto.&lt;/p&gt;

&lt;p&gt;Isso inclui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;descrições&lt;/li&gt;
&lt;li&gt;exemplos&lt;/li&gt;
&lt;li&gt;tags&lt;/li&gt;
&lt;li&gt;autenticação&lt;/li&gt;
&lt;li&gt;schemas&lt;/li&gt;
&lt;li&gt;organização das seções&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na prática, a documentação deixa de ser um artefato descartável e passa a ser um documento vivo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Organizando APIs maiores com Tags
&lt;/h2&gt;

&lt;p&gt;Conforme uma API cresce, navegar pela documentação pode ficar mais difícil.&lt;/p&gt;

&lt;p&gt;Por isso a gem possui suporte a tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;auth&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;public&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essas tags não são apenas informativas.&lt;/p&gt;

&lt;p&gt;Elas também funcionam como filtros interativos na documentação gerada.&lt;/p&gt;

&lt;p&gt;Ao clicar em uma tag, a navegação passa a exibir apenas os endpoints relacionados àquela categoria.&lt;/p&gt;

&lt;p&gt;Isso facilita bastante a exploração de APIs maiores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Produção deveria ser simples
&lt;/h2&gt;

&lt;p&gt;Outro objetivo importante era simplificar o deploy da documentação.&lt;/p&gt;

&lt;p&gt;Quando chega o momento de publicar, basta executar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rake rails-api-docs:build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado é:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public/api-docs.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Um único arquivo HTML.&lt;/p&gt;

&lt;p&gt;Tudo embutido.&lt;/p&gt;

&lt;p&gt;CSS inline.&lt;/p&gt;

&lt;p&gt;JavaScript inline.&lt;/p&gt;

&lt;p&gt;Sem dependências externas.&lt;/p&gt;

&lt;p&gt;Sem CDN.&lt;/p&gt;

&lt;p&gt;Sem Asset Pipeline.&lt;/p&gt;

&lt;p&gt;Sem runtime JavaScript.&lt;/p&gt;

&lt;p&gt;Apenas um arquivo estático que pode ser hospedado praticamente em qualquer lugar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Não estou tentando substituir OpenAPI
&lt;/h2&gt;

&lt;p&gt;Existem excelentes ferramentas baseadas em OpenAPI e Swagger.&lt;/p&gt;

&lt;p&gt;Elas resolvem muito bem diversos cenários.&lt;/p&gt;

&lt;p&gt;O objetivo do &lt;code&gt;rails-api-docs&lt;/code&gt; não é substituir esse ecossistema.&lt;/p&gt;

&lt;p&gt;A proposta é diferente.&lt;/p&gt;

&lt;p&gt;Eu queria uma solução que permitisse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gerar documentação a partir de uma aplicação Rails existente&lt;/li&gt;
&lt;li&gt;editar tudo em YAML&lt;/li&gt;
&lt;li&gt;visualizar mudanças instantaneamente&lt;/li&gt;
&lt;li&gt;exportar um HTML estático&lt;/li&gt;
&lt;li&gt;manter a documentação sincronizada com pouco esforço&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Era esse workflow que eu procurava.&lt;/p&gt;

&lt;p&gt;E como não encontrei exatamente dessa forma, resolvi construir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerações finais
&lt;/h2&gt;

&lt;p&gt;Documentação de API deveria ser simples de criar e simples de manter.&lt;/p&gt;

&lt;p&gt;Na minha experiência, o maior problema não é gerar a primeira versão.&lt;/p&gt;

&lt;p&gt;O desafio é mantê-la atualizada ao longo do tempo.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;rails-api-docs&lt;/code&gt; nasceu justamente para reduzir esse atrito.&lt;/p&gt;

&lt;p&gt;Inspecionando a aplicação para gerar um ponto de partida.&lt;/p&gt;

&lt;p&gt;Preservando suas customizações ao longo do tempo.&lt;/p&gt;

&lt;p&gt;E oferecendo um ciclo de feedback extremamente rápido durante o desenvolvimento.&lt;/p&gt;

&lt;p&gt;Se quiser experimentar:&lt;/p&gt;

&lt;p&gt;⭐ &lt;a href="https://github.com/jacksonpires/rails-api-docs" rel="noopener noreferrer"&gt;https://github.com/jacksonpires/rails-api-docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedbacks, sugestões e contribuições são muito bem-vindos.&lt;/p&gt;

</description>
      <category>api</category>
      <category>rails</category>
      <category>ruby</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
