O desafio foi implementado em Ruby on Rails e os testes em RSpec. Os dados são armazenados no PostgreSQL e gem Geokit foi usada na parte da localização. O método de autenticação usado é o JWT (JSON Web Tokens).
Foi criado um processo de CI/CD usando Travis CI, que é iniciado quando um push é feito para a master do repositório no Github. O processo de CI/CD consiste em fazer build do projeto, criar e migrar o banco de dados, fazer uma análise de segurança com o Brakeman (o processo falha se for encontrada alguma vulnerabilidade) e rodar os testes (o processo falha se algum teste quebrar ou se a cobertura de testes for menor que 95%). Se não acontecer problemas em nenhum dos passos anteriores, a API será implantada no Heroku.
- Ruby (MRI) 2.7.1
- Ruby on Rails 6
- PostgreSQL
- Docker Compose
- JWT
- Geokit Rails
- RSpec
Os endpoints desenvolvidos foram documentados através do Postman e a documentação está disponível neste link.
Uma coleção com exemplos de requisições pode ser importada pelo Postman com este link: https://www.getpostman.com/collections/7d45c971bbab1e7913df. A coleção possui as seguintes variáveis de ambiente:
- HOST:
localhost:3000
para requisições em desenvolvimento ehttps://api-places-mesa.herokuapp.com
para requisições em produção. - JWT_TOKEN: deve ser preenchido com o token retornado da requisição ao endpoint de login.
A API está hospedada no Heroku e disponível neste endereço https://api-places-mesa.herokuapp.com.
Obs.: A primeira requisição pode levar alguns segundos pra responder por conta das limitações do plano free do Heroku. As demais requisições devem ser respondidas no tempo normal.
Usando rbenv
rbenv install 2.7.1
Usando Docker Compose
docker-compose up -d
bundle install
bundle exec rake db:prepare
bundle exec rake dev:seed
bundle exec rspec
rails server