Aplicação Rails 8.1.3 para catálogo de sapatos com área administrativa. Stack: Ruby 4.0.5 + PostgreSQL + Tailwind + Turbo/Hotwire + Kamal.
| Item | Versão | Como instalar (CachyOS/Arch) |
|---|---|---|
| Ruby | 4.0.5 | rbenv install 4.0.5 && rbenv global 4.0.5 |
| PostgreSQL | >= 16 | sudo pacman -S postgresql |
| Node.js | >= 20 | sudo pacman -S nodejs npm |
| Bundler | latest | gem install bundler |
| Git | any | sudo pacman -S git |
Dica: use
asdfourbenvpara gerenciar versões do Ruby. Após instalar Ruby 4.0.5, executerbenv rehash.
# 1. Clone e entre no projeto
git clone <repo-url> ~/Documentos/my-shoes
cd ~/Documentos/my-shoes
# 2. Instale dependências
bundle install
# 3. Garanta que o PostgreSQL está rodando
sudo systemctl start postgresql
# 4. Crie o banco de desenvolvimento
bin/rails db:create
# 5. Rode as migrations
bin/rails db:migrate
# 6. (Opcional) Popule com dados de exemplo
bin/rails db:seed
# 7. Inicie o servidor
bin/rails serverAcesse: http://localhost:3000
app/
controllers/
admin/
shoes_controller.rb # CRUD administrativo de sapatos
catalog_controller.rb # Página pública do catálogo
models/
shoe.rb # Modelo principal
shoe_variant.rb # Variantes (tamanho/estoque/preço)
brand.rb # Marcas
category.rb # Categorias
size.rb # Tamanhos
services/ # Lógica de negócio
forms/ # Form objects
queries/ # Objetos de consulta
config/
routes.rb # Rotas públicas + admin
database.yml # PostgreSQL (dev/test/prod)
db/
migrate/ # Migrations
schema.rb # Schema atual
seeds.rb # Dados de exemplo
| Rota | Método | Função |
|---|---|---|
/ |
GET | Catálogo público (somente leitura) |
/admin/shoes |
GET | Listagem de sapatos (admin) |
/admin/shoes/new |
GET | Novo sapato (admin) |
/admin/shoes/:id |
GET | Detalhes (admin) |
/admin/shoes/:id/edit |
GET | Edição (admin) |
/admin/shoes |
POST | Criação (admin) |
/admin/shoes/:id |
PATCH/PUT | Atualização (admin) |
/admin/shoes/:id |
DELETE | Remoção (admin) |
/up |
GET | Health check (Rails) |
- brands:
name(único),description - categories:
name(único),position - sizes:
label(único),value_cm - shoes:
name,gender,active,brand_id,category_id,description - shoe_variants:
shoe_id,size_id,price,stock_quantity
# Criar migration
bin/rails generate migration NomeDaMigration
# Aplicar migrations
bin/rails db:migrate
# Reverter última migration
bin/rails db:rollback
# Popular banco
bin/rails db:seed
# Abrir console Rails
bin/rails console
# Abrir console do banco
bin/rails dbconsolebin/rails server
# ou
bin/rails sAcesse: http://localhost:3000
bin/rails console
# ou
bin/rails cExemplos úteis no console:
# Listar todos os sapatos
Shoe.all
# Criar uma marca
Brand.create!(name: "Nike", description: "Esportiva")
# Criar um sapato
Shoe.create!(name: "Air Max", gender: "masculino", brand: nike, category: categoria)
# Ver variantes de um sapato
shoe.shoe_variants.includes(:size)# Rodar todos os testes
bin/rails test
# Rodar testes específicos
bin/rails test test/models/shoe_test.rb
# Rodar system tests
bin/rails test:system# RuboCop (omakase Rails)
bin/rubocop
# Autocorrigir problemas simples
bin/rubocop -aAcesse a área admin em: http://localhost:3000/admin/shoes
Funcionalidades:
- Listar sapatos cadastrados
- Criar novo sapato com nome, gênero, marca, categoria e descrição
- Editar sapatos existentes
- Ativar/Desativar sapatos (campo
active) - Gerenciar variantes (tamanho, preço, estoque)
- Acesse
/admin/shoes - Clique em Novo Sapato
- Preencha:
- Nome
- Gênero (
masculino,feminino,unissex) - Marca (selecione ou crie)
- Categoria (selecione ou crie)
- Descrição (opcional)
- Salve
- Adicione variantes (tamanho + preço + estoque)
Acesse a raiz (/) para ver o catálogo público.
Funcionalidades:
- Listagem de sapatos ativos
- Filtragem por categoria/marca
- Visualização de variantes (tamanhos disponíveis)
A aplicação usa Turbo para atualizações dinâmicas sem recarregar a página.
- Turbo Drive: navegação SPA-like
- Turbo Frames: atualizações parciais
- Turbo Streams: ações assíncronas
- Importmap: gerenciamento de dependências JS sem build
- Stimulus: controllers para interatividade
- Tailwind CSS: estilização utility-first
Edite via Rails credentials ou variáveis de ambiente:
# Editar credentials
EDITOR="nvim" bin/rails credentials:edit
# Ou use variáveis diretas
DATABASE_URL=postgres://user:pass@localhost/my_shoes_development bin/rails serverA aplicação usa Kamal para deploy em servidores.
# Verificar configuração
cat config/deploy.yml
# Deploy
kamal deploy
# Rollback
kamal rollback
# Acessar servidor
kamal app exec -- bashRequer Docker instalado no servidor de produção.
# Verifique se o PostgreSQL está rodando
sudo systemctl status postgresql
# Crie o banco se não existir
bin/rails db:create# Use outra porta
bin/rails server -p 3001# Reinstale gems
rm -rf .bundle vendor/bundle
bundle install# Limpe assets
bin/rails assets:clobber
bin/rails assets:precompile| Comando | Função |
|---|---|
bin/rails s |
Inicia servidor |
bin/rails c |
Abre console |
bin/rails db:migrate |
Aplica migrations |
bin/rails db:seed |
Popula banco |
bin/rails test |
Roda testes |
bin/rubocop |
Lint |
bin/rails routes |
Lista rotas |
Use os comandos Rails no Neovim via vim-rails ou vim-dispatch:
" Executar migrations
:!bin/rails db:migrate
" Rodar testes
:!bin/rails test
" Abrir console
:!bin/rails consoleSessão recomendada:
# Sessão principal
tmux new -s my-shoes
# Janela 1: servidor
bin/rails server
# Janela 2: console
bin/rails console
# Janela 3: tail logs
tail -f log/development.logSe usar Neovim com vim-rails:
:Epara explorar estrutura:Emodel shoepara editar model:Eview catalog/indexpara editar view
- Explore o catálogo em
/ - Cadastre marcas e categorias no admin
- Crie sapatos com variantes
- Customize o layout em
app/views/ - Adicione mais funcionalidades (carrinho, checkout, etc.)