Skip to content

rmoura/parking-control

Repository files navigation

Parking Control API

build status

API para controle de estacionamento, onde deve ser possível:

  • Registrar entrada, saída e pagamento;
  • Liberar saída sem pagamento;
  • Fornecer um histórico por placa.

Sobre a aplicação

API está disponível no seguinte endereço: https://rmoura-parking-control.herokuapp.com

- Documentação API

Assim que novos testes forem desenvolvidos ou atualizados no path spec/integration, a documentação deve ser atualizada utilizando o comando:

$ bundle exec rake rswag:specs:swaggerize

Para melhores práticas e qualidade no desenvolvimento de código foi utilizado a gem rubocop, forçamdo a aplicação de melhores práticas e convenções de codificação. Para análise:

$ rubocop --require rubocop-rails

Para análise de vulnerabilidades foi utilizado a gem brakeman. O último relatório gerado está disponível no path storage/brakeman.html. Para gerar um novo:

$ brakeman -o storage/brakeman.html

A análise de cobertura de testes é atualizado assim que os testes são executados, o resultado da análise fica em coverage/index.html, podendo ser visualizado em um navegador, como o Google Chrome. Até o momento a cobertura dos testes é de 98.3%.

É possível subir esta aplicação em ambiente de testes/desenvolvimento utilizando o Docker. A utilização do Docker é opcional para desenvolvimento.

O deploy está sobre o serviço do Heroku com Docker. Cada push ao Github é acionado o Github Actions. O workflow desenhado é, executar os testes automatizados desenvolvidos, validar o build e aí então realizar o deploy automaticamente no Heroku.

Esta API foi desenvolvida utilizando Ruby 2.7, Rails 6.0.2.2 e PostgreSQL 11.

Para os testes unitários o RSpec.

Foi implementado também um health check da aplicação.

Dependências

Para a opção de não utilizar Docker, instalar:

  • Ruby 2.7
  • Postgres

Para a opção com Docker, instalar:

  • Docker
  • docker-compose

Configuração com Docker

Para deploy localmente, basta copiar o arquivo .env.sample para apenas .env, já para deploy com acesso a banco de dados específico basta ajustar .env com as variáveis de ambiente adequadas da seguinte forma:

$ cp .env{.sample,}

Editar variáveis contidas neste arquivo:

$ DATABASE_URL=postgres://<username>:<password>@<hostname>:5432/<database_name>
$ SECRET_KEY_BASE=<valor alfanumérico com 128 caracteres>

No arquivo .env.sample segue valores definidos como exemplo para ajuste.

Iniciar processo de build e start dos containers para subir os serviços:

$ docker-compose up -d

Geração de tabelas e banco de dados:

$ docker-compose run app rake db:create
$ docker-compose run app rake db:migrate

Checar se aplicação subiu corretamente:

$ curl localhost:3000

O resultado deve ser:

{"healthy":true,"message":"OK"}

Para execução dos testes com Rspec

$ docker-compose run spec

About

API para controle de estacionamento

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors