El proyecto consiste en una plataforma de chat web que permite a los usuarios conectarse a las distintas salas existentes o crear una nueva. La arquitectura en el core de la aplicación sigue el patrón 'Convention over Configuration' típico de Rails con algunas variaciones realizadas tratando de aproximar éste al patrón de 'Arquitectura Hexagonal'. Respecto al front, se ha mantenido la estructura preconfigurada gracias a vue-cli
- La aplicación requiere de MongoDB para la persistencia en BD (Utiliza el cliente Mongoid para su manejo desde el backend en RoR). La BD del proyecto es web_chat_development
- Para la comunicación webSocket también se ha utilizado Redis
- Instalar Bundler para la gestión de gemas
cd webChat-back
gem install bundler
- Instalar las dependencias definidas en nuestro
GemFile
bundle install
- Instalar las dependencias definidas en nuestro fichero
package.json
:
cd webChat-front
npm install
Es necesario que el cliente de MongoDB esté ejecutándose de fondo, podemos levantarlo desde una terminal con el comando mongod
que mantendrá en ejecución el daemon de esta BD por defecto en el puerto 27017
Para la comunicación webSocket en la sala de chat también necesitamos la ejecución de Redis, el comando redis-server
levantará el daemon por defecto en el puerto 6379
Nos dirigimos al directorio de la aplicación Rails y lanzamos el servidor, que escuchará por defecto desde el puerto 3000
cd webChat-back
rails server
Nos dirigimos al directorio del proyecto de la aplicación Vue y lanzamos el servidor, que escuchará por defecto desde el puerto 8080
cd webChat-front
npm run dev
Se han desarrollado diferentes suites de tests para el código de Rails utilizando Rspec
:
(No se ha mockeado la conexión webSocket, por lo que en los tests realizados sobre los controladores es necesario mantener levantado Redis)
cd webChat-back
rspec
Como para el código de Vue utilizando Jest
y Vue test-utils
:
cd webChat-front
npm run test