Este proyecto consiste en una aplicacion web para gestionar cursos: se pueden administrar las distintas cursadas, los alumnos que se inscriben a las mismas, las instancias de evaluación del curso y las calificaciones obtenidas por los alumnos. A su vez, cada curso cuenta con un foro el cual permite publicar temas, suscribirse y recibir notificaciones, marcar las mejores respuestas, dar like/dislike a los posts, entre otras cuestiones.
El proyecto utiliza ElasticSearch para implementar la funcionalidad de búsqueda de los posts de los foros de cada curso
ElasticSearch requiere Java 8
Para instalar ElasticSearch, lo mejor es referirse a su documentación. Para sistemas basados en Debian, se puede usar un paquete o instalarlo por APT
Tambien se requiere, para poder utilizar Webpacker:
- Node.js 6.0.0+
- Yarn 0.25.2+
- Versión de Ruby: el proyecto se dessarrolló usando ruby 2.4.1p111 (2017-03-22 revision 58053), pero deberia ser compatible con cualquier ruby 2.4.x
- Dependencias: Como en la mayoria de los proyectos Rails, son gestionadas usando Bundler. Las mas destacadas son:
- Rails 5.1.4
- Validates
- Faker
- Contracts
- Devise
- Pundit
- acts_as_votable
- FontAwesome
- Kaminari
- friendly_id
- Bulma
- ElasticSearch-Rails
- ElasticSearch-Model
- Webpacker
- PostgreSQL para producción; SQLite3 para desarrollo y tests
- Clonar el repositorio:
git clone https://github.com/ortuagustin/fluffy.git
cd fluffy
- Ejecutar bundler para instalar las dependencias de Ruby:
bundle
En desarrollo no es necesario instalar postgres:
bundle install --without production
- Ejecutar yarn para instalar las dependencias de JavaScript:
yarn install
-
Es posible que se necesiten dependencias adicionales para las bases de datos; en sistemas linux, se debe
- SQLite (desarrollo y tests):
apt install sqlite3 apt install libsqlite3-dev
- PostgreSQL (producción):
apt install libpq-dev
-
Configurar la base de datos:
- Para crear la BD, ejecutar:
rails db:migrate
- Para inicializar la BD con los seeds, es decir, un set de datos inicial, ejecutar
rails db:seed
- Para indizar en ElasticSearch los posts creados en el seed, ejecutar
bundle exec rake environment elasticsearch:import:model CLASS='Post'
-
Se utiliza Webpacker para los assets utilizados en el frontend; correr en el directorio raiz del proyecto:
./bin/webpack
-
Ejecución: Correr el servidor:
rails s
y acceder a la aplicación. Los usuarios que se crean con los seeds son:
-
user: admin, password: admin. Este usuario tiene el rol "ADMIN"
-
user: guest, password: guest. Este usuario tiene el rol "GUEST"
-
El rol ADMIN es el unico que puede poner los posts como "sticky" (destacado o anclado)
-
Solo los "dueños" de los post (es decir, los creadores), pueden elegir cual es la mejor respuesta del mismo
-
Los usuarios pueden suscribirse a las notificaciones de cualquier post (por defecto se suscribe automaticamente al creador de los posts)
-
Los usuarios que no crearon un post/respuesta pueden dar like/dislike a un post/respuesta
- Para correr los tests:
rails t
Ésta aplicación fue desplegada a la plataforma Heroku, podés verla siguiendo este link. Si no querés registrarte, podes ingresar con el usuario admin
, admin
:)
La aplicacion no funciona en Heroku porque depende de ElasticSearch, y es un servicio que si bien se puede integrar de manera gratuita, Heroku exige que la cuenta tenga vinculada una tarjeta de credito para agregar este paquete. Por lo tanto, la aplicacion no funciona en Heroku