Vamos a hacer una base de datos de medicamentos para un hospital o similar, se podrá consultar datos de los propios medicamentos como por ejemplo el prospecto de un medicamento determinado, cantidad que queda de cada medicamento, estadísticas de consumo, ademas si es posible haremos un sistema que nos avise cuando no quedan existencias suficientes de un medicamento o si se aproxima mucho su fecha de caducidad.
- Usaremos Ruby como lenguaje de programación.
- Hemos usado contenedores Docker para ejecutar nuestra aplicación. Nuestro contenedor Docker lo alojamos en Docker Hub, un repositorio donde mantener imágenes de Docker. Docker Hub es open source bajo la licencia de Apache.
- El despliegue en la nube se ha echo con Heroku, es gratuito y no nos pide tantos tramites para su uso.
- Para la integración continua hemos usado Travis-CI, hemos elegido este sistema porque se activa automáticamente al hacer un push a nuestro repositorio git, además, es gratuito.
- Como framework para servicios web hemos decidido usar sinatra, es open source, es flexible y rápido, además su uso es muy simple.
- Tenemos RubyGems como sistema para gestionar bibliotecas.
- Como editor de texto ya tenemos Atom.
- La base de datos a usar será alguna de las siguientes: MySQL, MariaDB, PostgreSQL, Mongodb .
Vamos a testear la clase "funciones" incluida en nuestro directorio "/src", la cual crea un nuevo objeto medicamento con los atributos que le corresponden (nombre, prospecto, fecha caducidad, id).
Lo primero que hacemos es añadir la integración continua con Travis-CI, Enlace a el badge de Travis :
Para instalar clonamos este repositorio
Para testear en local la clase poner en terminal la siguiente orden:
- rake
El test nos avisará si algun atributo no es el esperado, asi como si un medicamento está caducado o tenemos menos de 5 unidades de ese medicamento. El test se ejecuta con un solo medicamento, habria que hacer un test para cada medicamento que queramos incluir en nuestra base de datos.
Necesitamos los archivos procfile y config.ru, estos ficheros contienen información de configuración y se localizan en el directorio raíz del proyecto.
Procfile es un archivo de texto simple que describe los componentes necesarios para ejecutar una aplicación. Es la forma de decirle a Heroku cómo ejecutar sus aplicaciones.
Para iniciar nuestra aplicación modular usaremos config.ru, el cual nos permite usar cualquier handler Rack, en nuestro caso Heroku.
Enlace a nuestra documentación del despliegue en Heroku
Para ejecutar en local:
Probar un fichero:
* ruby myapp.rb
Probar aplicación desde directorio raiz:
* rackup
Probar desde Heroku:
* Heroku local web
Ejecutar en la web:
* heroku open.
Podemos añadir diferentes rutas al deploy:
/medicamento
/listaMedicamentos
/nombres
Nota: Si el enlace de Heroku sale Forbidden, recargar la pagina.
Enlace a la documentación Docker del Proyecto
Enlace a la documentación de DockerHub del Proyecto
Enlace a despliegue en Heroku de nuestro contenedor Docker, alojado en DockerHub
Enlace a DockerHub
Nota: hemos añadido log de acceso y error a nuestra aplicación, estas se van guardando en "/sinatra/log/error.log" y en "/sinatra/log/access.log"
Hemos utilizado Azure como LaaS, hemos hecho la orquestación de maquinas virtuales desde Vagrant y el aprovisionamiento del mismo con Ansible, el despliegue con Fabric.
Enlace a la documentación especifica de Vagrant
Enlace a la documentación del despliegue
Despliegue final: 13.94.145.191
URL Despliegue final: http://ivgestion.westeurope.cloudapp.azure.com/