Alternativas ao ERB (Embedded Ruby)

Artigos - 11/Nov/2020 - por André Kanamura

A maneira mais popular de embutir código Ruby dentro de views em aplicações Ruby on Rails é utilizando arquivos do tipo ERB (Embedded Ruby). O Rails oferece suporte ao ERB por padrão, mas existem outros processadores como o HAML e o Slim, que também podem ser utilizados com facilidade. Vamos comparar os três formatos.

ERB

O formato ERB permite implementar código Ruby em diferentes tipos de documento, como HTML e XML. A sintaxe básica fica mais ou menos assim:

<h1>Catálogo de Livros</h1>
<p>Boas vindas!</p>

<% if @books.any? %>
  <% @books.each do |book| %>
    <h3><%= book.title %> </h3>
    <p><%= book.author %> </p>
    <p><%= book.publication_year %> </p>
  <% end %>
<% else %>
  <h3> Não há livros cadastrados </h2>
<% end %>

No ERB a estrutura e sintaxe do HTML permanecem e podemos utilizar <% %> para embutir código Ruby nele. Caso o retorno desse código deva ser inserido no documento, usamos <%= %>, da mesma maneira como uma interpolação. Elementos HTML podem ser adicionados como um documento HTML normal.

HAML

HAML (HTML abstraction markup language) tem sintaxe super limpa e concisa:

%h1 Catálogo de Livros
%p Boas vindas!

- if @books.any?
  - @books.each do |book| 
    %h3= book.title
    %p= book.author
    %p= book.publication_year
- else
  %h3 Não há livros cadastrados

Para indicar que o retorno do código Ruby deve ser inserido no documento, deve ser usado o =. Quando o código será apenas executado (sem inserir no documento), usamos o - (hífen). Elementos HTML são implementados com % seguido pelo nome do elemento e o aninhamento de elementos é indicado pela indentação, por exemplo:

%primeiro
  %segundo
    %terceiro Texto do elemento

Esse HAML vai compilar um HTML assim:

<primeiro>
  <segundo>
    <terceiro>Texto do elemento</terceiro>
  </segundo>
</primeiro

Slim

Derivado do HAML, o Slim é outra forma de embutir Ruby em documentos. É uma alternativa ágil e leve que promete maior velocidade de compilação.

h1 Catálogo  de Livros
p Boas vindas!

- if @books.any?
  - @books.each do |book|
    h3 = book.title
    p = book.author
    p = book.publication_year
- else 
  h3 Não há livros cadastrados

Com Slim a indicação de elementos HTML é feita diretamente, sem necessidade de marcadores. Da mesma forma que no HAML, código Ruby pode ser executado com o -. Para que o código Ruby seja inserido no documento usamos o =.

Convertendo views

Se você já possui um projeto construído com ERB e gostou de outro formato, existem ferramentas para converter seu código como o ERB 2 SLIM e o HTML to HAML. Também existem ferramentas para fazer o caminho reverso: [HAML to ERB}(https://haml2erb.org).

Considerações finais

Minha preferência ainda é pelo ERB, mas é sempre interessante conhecer as alternativas. Principalmente se for do seu interesse que o código das views seja mais enxuto. Se você ainda não conhecia as opções, vale a pena fazer alguns testes antes de tomar a decisão. Uma boa prática é manter sempre um único formato em todo projeto, garantindo que a leitura e manutenção seja mais simples no futuro.

Um ponto positivo é que no Rails é muito simples adicionar um novo processador, basta adicionar sua respectiva gem ao Gemfile da aplicação e criar (ou renomear) suas views com as extensões .haml ou .slim. Você pode ver mais detalhes sobre instalação e uso dos frameworks nos links abaixo.

Referências

Foto de perfil do autor
André Kanamura

Dev na Campus Code