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.
API está disponível no seguinte endereço: https://rmoura-parking-control.herokuapp.com
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.
Para a opção de não utilizar Docker, instalar:
- Ruby 2.7
- Postgres
Para a opção com Docker, instalar:
- Docker
- docker-compose
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"}
$ docker-compose run spec
- Documentação API