Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

News API - Challenge

Proyecto reto de desarrollo de API para obtener distintas Noticias.

Contenido

Características

Generales

  • Obtener toda información de las noticias registradas en base de datos en formato JSON.

Especiales

  • Registrar, eliminar y presentar la información de una noticia o fuente.
  • Carga de información en base de datos a través de comandos desde News API.

Requerimientos

Para la ejecución del proyecto se requiere como mínimo:

  • Git - Sistema de control de versiones distribuido de código abierto y gratuito.
  • Ruby - Lenguaje de programación interpretado, reflexivo y orientado a objetos.
  • PostgreSQL - Sistema gestor de bases de datos relacional.
  • Docker - Plataforma que permite el despligue automático de aplicaciones en contenedores.
  • Visual Studio Code - Visual Studio Code es un editor de código fuente multiplataforma. (Puede usar cualquier IDE o editor de texto como: RubyMine, Aptana, etc...).

Instalación

Para ejecutar el proyecto se requiere tener PostgreSQL localmente. Otro medio es usar contenedores por lo cual se describe la solución usando Docker:

Instalar contenedor PostgreSQL

  1. Descargar la imagen:
docker pull postgres:latest
  1. Crear un volumen para datos del contenedor:
docker network create rails-postgres-nt
  1. Crear un volumen para datos del contenedor:
docker volume create postgres-vl
  1. Contruir el contenedor con las configuraciones correspondientes:
docker run -d --name postgres-ct -p 5432:5432 --network rails-postgres-nt -e POSTGRES_PASSWORD=<clave> -e POSTGRES_USER=<usuario> -v postgres-vl:/var/lib/postgresql/data postgres:latest

Ejecución del proyecto local

  1. Obtener y guardar la clave maestra del proyecto en variable de entorno del sistema:
export RAILS_MASTER_KEY=$(curl -sS https://gist.githubusercontent.com/edgewl2/41646a96ed0eb106671f466786b815b9/raw/21bb726dfd752619acb3aa88820a47ecbb061ab5/masterKey.txt)
  1. Guardar en una variable de entorno del sistema:
git clone https://github.com/edgewl2/ror_news_api.git news_backend
  1. Acceder al directorio raíz del proyecto:
cd news_backend

Sin contenedor

  1. Crear las bases de datos:
rails db:setup
  1. Realizar la migracion de entidades:
rails db:migrate
  1. Cargar información en base de datos:

Existen dos formas de realizar este proceso por CLI, usando una rake task y a través de seeds.

rails db_fetch:fill
rails db:seed
  1. Iniciar servidor:
rails server

Con contenedor

Se puede realizar de dos maneras diferentes.

  • Usando Docker Compose
  1. Ejecutar los servicios de la aplicación configurados:
docker-compose up -d

NOTA: En este momento se pueden realizar las pruebas correspondientes usando un cliente REST como: Postman, Insomnia, o el Front-end desarrollado.

  1. Detener y eliminar los servicios:
docker-compose down
  • Usando Docker Engine
  1. Construir la imagen a partir:
docker build . -t edgewl2/rails:latest
  1. Obtener la dirección IP usada por el contenedor PostgreSQL a través de su información:
docker container inspect postgres-ct | jq '.[0].NetworkSettings.Networks | .[].IPAddress'

Otra alternativa es conseguirla a través de la información de la red asociada:

docker network inspect rails-postgres-nt | jq '.[0].Containers | .[].IPv4Address / "/" | .[0]'
  1. Guardamos la dirección IP en una variable de entorno del sistema:
export POSTGRES_HOST=<IP contenedor>
  1. Creamos el contenedor del API Rails:
docker run -d --name news-api-ct -p 3000:3000 --network rails-postgres-nt -e RAILS_MASTER_KEY=$RAILS_MASTER_KEY -e POSTGRES_HOST=$POSTGRES_HOST edgewl2/rails:latest

NOTA: En este momento se pueden realizar las pruebas correspondientes usando un cliente REST como: Postman, Insomnia, o el Front-end desarrollado.

  1. Parar los contenedores:
docker stop $(docker ps -q)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages