Coding an API (training project) serving home-gun
Android app.
- Programming language:
ruby 2.3.0
- Software development platform:
docker
- Database:
postgres
- Framework for HTTP requests:
sinatra
In separate terminal:
docker-machine create -d virtualbox default
eval $(docker-machine env default)
docker-compose up
Relaunch:
docker-machine status
docker-machine start
docker ps
eval $(docker-machine env default)
docker-compose up
Nothing in log? Run: docker-compose up
Ip: docker-machine ip
(don't forget to update .env
)
If no TLS (SSH) certificate:
docker-machine regenerate-certs default
docker ps -q | xargs docker kill
docker ps -q | xargs docker rm
Running migration schema:
PGPASSWORD=pass bundle exec sequel -m database/migrations/ postgres://homegun@`docker-machine ip`:5431/homegun -t
or:
bundle exec database/migrate
Managing database migrations:
- create migration files in
database/migrations
- use Sequel documentation with ruby and postgres helpers
Running trough the database:
docker exec -it `docker ps -q` bash
psql -Upostgres
\l
\c homegun;
\d
drop table users;
After launching your containers:
bin/server
WIP
Request body:
{ "name": "Herve" }
Response status: 201
Response body:
{ "name": "Herve" }
Request body:
{
"user_id": 1,
"value": 2,
"date": "29/09/2016"
}
Response status: 201
Response body:
{
"user_id": 1,
"value": 2,
"date": "29/09/2016"
}
Response status: 200
Response body:
{
"users": [
{
"id": 1,
"name": "Herve",
"kitchen_points": 10,
"kitchen_points_url": /users/1/kitchen_points"
},
{
"id": 2,
"name": "Thomas",
"kitchen_points": 15,
"kitchen_points_url": /users/2/kitchen_points"
}
]
}
Response status: 200
Response body:
{
"history": [
{
"points": 2,
"date": "30/09/2016"
},
{
"points": 4,
"date": "29/09/2016"
}
]
}
WIP
WIP