Skip to content

jvras58/ruby-estudo

Repository files navigation

Ruby - Estudos [Clean Architecture]

📖 Sobre o Projeto

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.

🚀 Tecnologias e Ferramentas

O projeto foi criado para aprimorar conhecimentos em Ruby, explorando suas capacidades e integração com outras ferramentas e bibliotecas.

Stack do Projeto

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.

Bibliotecas e Tecnologias Utilizadas:

Tecnologia Versão
Runtime
Ruby v3.4.0
Desenvolvimento
Docker Engine vx.x.x
Bundler v2.6.0

Organização do Projeto

/
├─📁 .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

🛠️ Configuração do Ambiente de Desenvolvimento

Este repositório está configurado para rodar em um Devcontainer no VSCode. Siga os passos abaixo para instanciar o ambiente.

Extensões Recomendadas

  • 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

Docker Engine

É necessário ter o Docker Engine instalado. Veja o guia de instalação para seu sistema operacional aqui.

Procedimento para Instanciar o Projeto no VSCode

  1. Instale o pacote de extensões recomendadas.
  2. Clone ou faça fork deste repositório.
  3. Abra o diretório do projeto no VSCode.
  4. 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.

🚀 Iniciando a Aplicação

  1. Para iniciar o servidor (instalar as dependências e subir o ambiente):
    rake start

Endpoints HTTP

@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.

Teste Aqui

🔧 Comandos Úteis

Rodar o Linter

  1. Verificar o código com Rubocop:
    rake lint

Adicionar Novas Dependências

  1. Instale uma nova biblioteca:
    gem install <nome_da_lib>
  2. Adicione a nova biblioteca ao Gemfile:
    gem '<nome_da_lib>'

🗂️ Gerenciamento de Banco de Dados

  1. Crie uma nova migração (substitua exemple pelo nome desejado):
    rake db:create_migration Name=exemple
  2. Execute a migração:
    rake db:migrate

🛠️ Testes com RSpec:

  1. Documentação de integração entre Sinatra/Ruby e RSpec:
  1. Execute os testes:
    rake test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published