Introdução
Neste tutorial, vamos mergulhar no desenvolvimento full stack utilizando Ruby on Rails, com foco em como integrar Hotwire e Stimulus para criar aplicações web reativas e de alta performance. Ruby on Rails é um framework poderoso que permite desenvolver aplicações complexas de forma rápida e eficiente. Hotwire é uma abordagem nova para construção de interfaces de usuário, que elimina a necessidade de um JavaScript pesado, enquanto Stimulus complementa Hotwire ao adicionar comportamentos interativos em seus componentes HTML. Nesta caminhada, abordaremos a configuração do ambiente, criação de uma aplicação simples e a implementação do Hotwire e Stimulus para melhorar a experiência do usuário. Vamos lá!
Etapas
Configuração do Ambiente de Desenvolvimento
Certifique-se de ter Ruby e Rails instalados em sua máquina. Você pode verificar as versões instaladas utilizando os comandos `ruby -v` e `rails -v`. Se não estiverem instalados, você pode seguir as instruções oficiais na página do Ruby e no site do Rails.
commands# Verificar versões instaladas
ruby -v
rails -vCriação do Projeto Rails
Utilize o terminal para criar um novo projeto Rails. Navegue até o diretório onde você deseja criar o projeto e execute o seguinte comando para gerar uma nova aplicação Rails com suporte para Hotwire:
commandsrails new myapp --skip-javascript --skip-turbolinks
cd myapp
bundle add hotwire-railsConfiguração do Hotwire e Stimulus
Depois de adicionar Hotwire ao seu projeto, você deve executar a instalação. Isso adicionará as dependências do Stimulus ao seu projeto Rails. Execute os seguintes comandos:
commandsrails hotwire:install
Criação do Modelo de Tarefa
Agora vamos criar um modelo simples de ‘Tarefa’. Isso nos permitirá explorar as funcionalidades do Hotwire e Stimulus enquanto interagimos com dados. Execute os seguintes comandos para gerar o modelo e a migração:
commandsrails generate model Task title:string completed:boolean
rails db:migrateCriação do Controlador de Tarefas
Com o modelo criado, agora precisamos de um controlador que gerencie as tarefas. Execute o comando abaixo para gerar o controlador e, em seguida, adicione as ações necessárias:
commandsrails generate controller Tasks
TasksController.rbclass TasksController < ApplicationController def index @tasks = Task.all end def create @task = Task.new(task_params) if @task.save respond_to do |format| format.html { redirect_to tasks_path } format.turbo_stream end else render :new end end private def task_params params.require(:task).permit(:title, :completed) end end
Criando as Views com Hotwire
Vamos agora criar as views de tarefas utilizando Turbo para renderizar a lista de tarefas. Em `app/views/tasks/index.html.erb`, adicione o seguinte código:
index.html.erb<h1>Tarefas</h1> <%= form_with model: Task.new, local: false do |form| %> <%= form.text_field :title %> <%= form.submit "Criar Tarefa" %> <% end %> <turbo-frame id="tasks"> <%= render @tasks %> </turbo-frame>
Renderizando Cada Tarefa
Crie uma parcial para renderizar cada tarefa, facilitando a injeção reativa. Em `app/views/tasks/_task.html.erb`, adicione:
_task.html.erb<div> <%= task.title %> <%= button_to 'Completar', complete_task_path(task), method: :patch, data: { turbo_method: :patch } %> </div>
Finalizando a Integração com Stimulus
Para complementar a aplicação, adicione um controlador Stimulus. Crie um arquivo em `app/javascript/controllers/task_controller.js` e inclua uma simples lógica para executar alguma ação ao interagir com a tarefa.
task_controller.jsimport { Controller } from "@hotwired/stimulus"; export default class extends Controller { complete() { alert('Tarefa completa!'); } }
Executando a Aplicação
Agora, você pode executar a aplicação e verificar se tudo está funcionando corretamente. Inicie o servidor Rails e acesse a aplicação pelo navegador.
commandsrails server
# Acesse o navegador e vá para http://localhost:3000/tasks
Conclusão
Neste tutorial, você aprendeu a configurar um aplicativo Ruby on Rails completo utilizando Hotwire e Stimulus para criar uma interface reativa. Vimos como configurar o ambiente, criar um modelo simples e implementar ações reativas com Turbo e Stimulus. Essa abordagem moderna reduz a complexidade do JavaScript, promovendo uma experiência de desenvolvimento mais fluida e produtiva. Com esse conhecimento, você está pronto para explorar mais sobre aplicações web reativas com Rails.