Sistema inteligente para cantinas escolares (multi‑tenant).
cp .env.example .env # ajuste credenciais do banco
bundle install
bin/rails db:create db:migrate db:seed
bin/rails db:migrate:tenants # cria os schemas das escolasdocker compose -f docker-compose.dev.yml up --build -d
docker compose -f docker-compose.dev.yml exec dev bin/rails db:create db:migrate db:seed
docker compose -f docker-compose.dev.yml exec dev bin/rails db:migrate:tenantsO app roda em http://localhost:3000.
O primeiro segmento da URL é a slug da escola (ex.: instituto-estrela-da-manha1a2b).
# Descubra a slug
docker compose -f docker-compose.dev.yml exec dev bin/rails runner "puts Escola.first.slug"
# Sem Docker:
bin/rails runner "puts Escola.first.slug"Acesse http://localhost:3000/{slug}/dashboard.
Seed padrão:
| Campo | Valor |
|---|---|
| URL | /{slug}/dashboard |
| Login (username) | teste123 |
| Login (email) | teste@exemplo.com |
| Senha | 123456 |
| Ação | Sem Docker | Com Docker (exec dev) |
|---|---|---|
| Servidor + Tailwind | bin/dev |
(já sobe com compose up) |
| Testes | bundle exec rspec |
bundle exec rspec |
| Lint | bin/rubocop |
bin/rubocop |
| Console | bin/rails console |
bin/rails console |
Migrar schema public |
bin/rails db:migrate |
bin/rails db:migrate |
| Migrar tenants | bin/rails db:migrate:tenants |
bin/rails db:migrate:tenants |
| Seeds | bin/rails db:seed |
bin/rails db:seed |
| Seed específico | bin/rails runner db/seeds/test/02_categorias.rb |
bin/rails runner db/seeds/test/02_categorias.rb |
- Model + migration:
bin/rails g model Foo nome:string descricao:text - Migre os tenants:
bin/rails db:migrate:tenants(a migration roda no schemapublic; oTenantSchemaManagera replica nos tenants) - Policy:
app/policies/foo_policy.rbcom Pundit (authorize @foono controller) - Controller: herde de
ApplicationController, useafter_action :verify_authorized - Rotas:
resources :foosemconfig/routes.rb - Views (seguir o padrão DataTableable):
app/views/foos/index.html.erb— userender 'shared/admin/data_table'app/views/foos/_form.html.erb— campos do formulárioapp/views/foos/_details.html.erb— detalhes do registroapp/views/foos/show.html.erb— página de showapp/views/foos/new.html.erbeedit.html.erb— delegam ao form
- Adicione ao menu: no
menu_groupsemapp/views/shared/admin/_side_bar.html.erb