- 📙 Biblia de Rails: Explicación clara y completa de cómo hacer una aplicación mediana en Rails. Explica practicamente todos los conceptos que van a necesitar para este proyecto. 10/10 Mejor material.
- 📹 Ayudantías del curso: Pensadas para este proyecto. Aprovechenlas
- 👌 Stack Overflow: La vieja confiable de los computines
- 🔀 Git y Github: Para que no sufran tanto al hacer merges
- Entiendan bien que significa. Rails está pensado para manejar la información de esta forma, y si no tienen claro el MVC, se van a perder muy fácil.
- Recordar que el controlador es quien debe acceder a la información de la base de datos (Modelo) y la vista solo debe leer la información que el controlador recolectó.
- El controlador recolecta información y muestra una vista apropiada o bien llama a otro contraldor (redirect).
- La lógica de la aplicación debería ir en los modelos. Es decir, cualquier algoritmo que no tenga que ver con recolectar información (controlador) ni mostrar información (vista) tiene que ir como método del modelo a que corresponde. Acá hay un ejemplo de esta buena practica.
- Buscar en google el mensaje de error. La mayoría de los casos va a estar StackOverflow ahí para salvarlos. A veces no se encuentra la solución directamente, pero se encuentran palabras claves que no conocías que te pueden ayudar a hacer una mejor búsqueda.
- Buscar en las issues del curso. Fijarse en closed.
- Usar herramientas de Debugging para su código, explicadas a continuación.
- Si nada de lo anterior funciona, feliz los ayudo a solucionar su problema!
Rails viene includo con dos gemas que permiten revisar las variables en algún punto de su programa:
- 💎
Byebug
: Solo escriben 'byebug' en alguna parte de su aplicación y cuando se ejecute esa línea les aparecerá en la consola una shell en donde pueden ejecutar comandoss, imprimir variables y avanzar en su código línea por línea. Les puede ser muy útil, sobre todo para revisar problemas en controladores y modelos. Acá un ejemplo. - 💎
Web-Console
: Similar a byebug, pero te muestra una consola en el mismo navegador al momento de mostrar una vista. Más útil cuando quieren debuggear codigo de una vista. Acá un ejemplo
- Lo primero que tienen que arreglar son los cambios que les indico en el feedback. Yo evalúo estos cambios en la sección de features logradas, para que tengan ojo!
- Hacer estos cambios les puede servir parar ir calentando. Generalmente son cosas fáciles de hacer.
- Se recomienda uasr el Framework de CSS Bulma. Es muy parecido a Bootstrap.
- Bulma les permite que su pagina se vea rápidamente decente usando unas pocas clases de CSS.
- Además, hace que su página sea Responsiva. Esto significa a que se adapta automáticamente al tamaño de la pantalla en donde estan viendo la página. Muy útil para poder usar la página desde celulares.
- Cuando hagan cambios en el frontend, cambien el tamaño de la ventana del navegador para ver como se comporta su página en distintos dispositivos.
- La documentación de Bulma es muy clara. Recomendada.
- Aprovechen la ayudantía de frontend que hicieron los ayudantes.
- Gema: pueden configurar bulma con la gema bulma-rails
- Para elementos que se repiten entre muchas vistas distintas, como por ejemplo una barra de navegación o el botón de cerrar sesión, la buena práctiva es usar Layouts de Rails. Acá un ejemplo.
- IMPORTANTE: Validaciones. Toda la información que se ingrese en su aplicación tiene que pasar por validaciones en el modelo. Con esto se evita que aparezcan valores inesperados y que la aplcación funcione incorrectamente. El uso de validaciones será contado como puntaje de calidad de features.
- Cuando hay algún dato mal ingresado, NO se tiene que eliminar todo el form, sino que solo el/los datos que están incorrectos. Es una lata para los usuarios (cuando corrigo también yo soy un usuario) tener que volver a ingresar toda la información.
- Opcional: Si tienen tiempo, aportaría mucho a la experiencia del usuario si puedieran hacer que los forms donde se pide mucha información (registro de matcher, solicitud de local), se hagan por pasos en vez de ingresar toda la información de una vez. Esto se puede hacer con la gema Wicked.
- Si el sprint pasado se anduvieron complicando con Git y Github, aprovechen este nuevo sprint para crear una nueva rama development a partir de master y luego crear sus ramas de features a partir de development.
- Recuerden que no se deben hacer commits directo en master a menos que sean para arreglar errores que aparecieron después de un merge y que no permitan subir la aplicación a Heroku.
- Fíjense que no sea posible acceder a múltiples sesiones en un mimsmo computador. Por ejemplo, si inicié sesión como usuario común, no debería poder acceder a la ruta /login (o su equivalente).
- Lo mismo para el caso de querer ingresar como dueño de local o administrador siendo que ya hay una sesión iniciada.
- Tienen que fijarse bien en su
rubocop.yml
que se esté revisando su carpetaapp
yconfig
, ya que ahí va a estar prácticamente todo el código. Vi algunos grupos que tenían los Includes mal configurados y que estas carpetas no estaban siendo revisadas. - Cuando ejecuten
rubocop
, les debería decir que está revisando por lo menos 50 archivos. - Recuerden que para tener todo el puntaje en Rubocop, no pueden haber ofensas al ejecutar el comando.
- Pueden generar información para rellenar sus modelos de prueba usando la gema 💎 Faker
- Una buena idea, para no tener que rellenar forms constantemente, puede ser asignarle por defecto a los inputs de su aplicación un valor dado por esta gema. Recordar desactivar en producción.
- Para que no tengan que rellenar las tablas a mano, les armé unos CSV con todas las comunas de Chile y sus coordenadas geograficas. 🎉
- Para cargar los CSV en su aplicación tienen varias opciones:
- A través de Rails parseando los CSV
- Directo a postgres con psql. Esto es para el desarrollo local.
- Directo a postgres para Heroku.
- Teniendo las coordenadas de cada comuna, ahora podemos calcular la distancia entre las personas y usarlo para mostrar personas que estén dentro de un radio de distancia! Para realizar este cálculo pueden usar la fórmula Haversine.
- Se agradecen profundamente uno que otro memoncio en su aplicación. Nada mejor para la depresión de corregir páginas sin frontend a las 3am 😞 👌
Ánimo con el Sprint! 💪
Con 💙 por @rafafdz