Este projeto é uma API desenvolvida com Ruby, focada no estudo e implementação dos princípios da Clean Architecture. A documentação detalhada do que é a API pode ser encontrada aqui.
O projeto foi criado para aprimorar conhecimentos em Ruby, explorando suas capacidades e integração com outras ferramentas e bibliotecas.
Esta API simples utiliza Ruby, uma linguagem multiparadigma, de tipagem dinâmica e forte, com gerenciamento automático de memória. O objetivo é demonstrar e aprender como estruturar um projeto seguindo os princípios da Clean Architecture.
| Tecnologia | Versão |
|---|---|
| Runtime | |
| Ruby | v3.4.0 |
| Desenvolvimento | |
| Docker Engine | vx.x.x |
| Bundler | v2.6.0 |
/
├─📁 .devcontainer -> Configurações do ambiente de desenvolvimento (Devcontainer)
├─📁 docs -> Artefatos de documentação
├─📁 app -> Implementação principal da aplicação
│ ├─📁 models -> Modelos da aplicação
│ │ ├─💎 exemple.rb -> Modelo de exemple
│ │ │ ...
│ ├─📁 adapters -> Camada de interfaces (adapters)
│ │ ├─📁 repositories -> Acesso e manipulação de dados
│ │ │ ├─💎 exemple_repository.rb -> interage com a tabela de exemple.
│ │ │ ...
│ │ ├─📁 controllers -> Controladores responsáveis por lidar com as requisições
│ │ │ ├─💎 exemple_controllers.rb -> Controlador responsável por lidar com exemples
│ │ │ ...
│ ├─📁 usecases -> Casos de uso da aplicação
│ │ ├─📁 exemples -> Casos de uso relacionados a exemples
│ │ │ ├─💎 create.rb -> Cria/salvar utilizando o repositório de exemple
│ │ │ ...
├─📁 config -> configura o suporte ativo para o projeto.
│ ├─💎 environment.rb -> configuração de todas as dependências e configurações do banco
├─📁 db -> Banco de Dados
├─📁 lib -> Utilitários da aplicação
├─📁 spec -> Ambiente para testes
│ │ ├─📁 app -> Casos de uso relacionados a exemples
│ │ ├─📁 model -> Casos de teste para o banco
│ │ | ├─💎 exemple_spec.rb -> simula direto no banco
│ │ ├─📁 usecases -> Casos de uso dos testes
│ │ ├─📁 exemple -> Casos de uso em testes
│ │ ├─💎 exemple_create_spec.rb -> simula Cria/salvar
│ │ ...
│ ├─💎 spec_helper.rb -> Auxiliares dos testes
│ │ ...
├─💎 app.rb -> Ponto de entrada da aplicação
├─📄 .env-sample -> Exemplo de arquivo de variáveis de ambiente
├─📄 .rspec -> configurações e inicializações para testes
├─📄 .gitignore -> Arquivos e pastas ignorados pelo Git
├─📄 Rakefile -> Automação de tarefas
├─📄 Gemfile -> Dependências do projeto
├─📄 README.md -> Este arquivo
Este repositório está configurado para rodar em um Devcontainer no VSCode. Siga os passos abaixo para instanciar o ambiente.
- Nome: Remote Development
- Id:
ms-vscode-remote.vscode-remote-extensionpack - Descrição: Pacote de extensões que permite abrir pastas em containers, máquinas remotas ou WSL com todas as funcionalidades do VSCode.
- Versão: 0.25.0
- VSCode Marketplace Link
É necessário ter o Docker Engine instalado. Veja o guia de instalação para seu sistema operacional aqui.
- Instale o pacote de extensões recomendadas.
- Clone ou faça fork deste repositório.
- Abra o diretório do projeto no VSCode.
- Execute o comando Dev Containers: Reopen in Container na paleta de comandos do VSCode (F1, Ctrl+Shift+P).
Após a configuração do Devcontainer, o VSCode abrirá o projeto dentro de um ambiente isolado, conforme definido no diretório /.devcontainer.
- Para iniciar o servidor (instalar as dependências e subir o ambiente):
rake start
@name: create-users-userQuery
Define o recebimento de parâmetros na URL.
@name: create-users
O servidor ainda não está configurado para interpretar corretamente o corpo JSON da requisição com
Content-Type: application/json.
- Verificar o código com Rubocop:
rake lint
- Instale uma nova biblioteca:
gem install <nome_da_lib>
- Adicione a nova biblioteca ao
Gemfile:gem '<nome_da_lib>'
- Crie uma nova migração (substitua
exemplepelo nome desejado):rake db:create_migration Name=exemple
- Execute a migração:
rake db:migrate
- Documentação de integração entre Sinatra/Ruby e RSpec:
- Execute os testes:
rake test