/OT220-Server

ONG-Ruby

Primary LanguageRuby

base-ong-server-ruby

Repositorio base para Caso ONG de Ruby.

image

Bienvenidos al la Aceleración del grupo OT220 🚀

Durante 6 semanas estaremos trabajando en el desarrollo de una API para una ONG Somos Más.

Como tecnologías principales estaremos utilizando Ruby y Ruby on Rails

Referencia básica del uso de GIT

A continuación tienen disposición un resumen básico del GIT flow con alguno de los commandos que pueden llegar a utilizar más habitualmente.

  • git clone [nombre-del-repositorio]: nos permite 'clonar' o traernos una copia de un repositorio en nuestra computadora.

  • git status: nos permite verificar es 'estado' de cada archivo, ya sea en working directory o staged.

  • git add [nombre archivo]: nos permite 'subir' un archivo a la staging area

  • git commit -m 'Mensage de commit': una vez que todos los archivos que vamos a registrar como modificados estan en la staging area, podes usar este comando para registrar una fotos del estado de esos archivos.

  • git commit --amend --no-edit: podemos 'enmendar' un commit si olvidamos agregar algún archivo.

  • git pull: nos permite traer los últimos cambios del repositorio remoto a nuestro repositorio local.

  • git checkout [nombre-de-la-rama-de-destino]: nos permite cambiarnos de branch.

  • git checkout -b [nombre-de-la-rama-a-crear]: nos permite en un único comando crear un branch y cambiarnos a ese branch.

  • git stash: nos permite almacenar temporalmente los cambios de una rama.

  • git rebase [nombre-de-la-rama-que-contiene-los-ultimos-cambios]: nos permite actualizar nuestro branch con los últimos cambios. Generalmente vamos a utilizar git rebase main para traer los cambios que contenga la branch main.

  • git push origin [nombre-de-la-rama]: nos permite subir los últimos cambios de nuestro repositorio local al repositorio remoto. Recuerda que NUNCA hacer git push origin main ya que primero debes crear un pull request en github para discutir los cambios realizados con el equipo. Si el push es realizado despues de un rebase, es habitual agregar el flag --force-with-lease para forzar la reescritura del historial de commits.

Workflow GIT(Conventional Commits)

A la hora de crear branches y commits vamos a estar usando la convención de conventional commits. A continuación les dejo un ejemplo:

  • Nombrar un branch: si tenemos un ticket de Jira que tiene la información
    Código del ticket: OT-151-21
    Título del ticket : Crear modelo, migración y controlador base de Members

Entonces el branch se podrá llamar feat/OT-151-21-model-migration-controller-member, trantando de no exederse mucho de los 50 carateres en la longitud del nombre.

  • Mensaje de commit: se podrá usar un mensaje descriptivo parecido al nombre del branch como por ejemplo feat OT-151-21: add model migration and controller for member

En caso de que el branch sirva para reparar un error el en código se deberá cambiar feat por fix

Comandos básicos Rubocop

Rubocop es un Lint, el cual no ayuda a mejorar la calidad y la prolijidad en la sintaxis de nuestro código. Podemos ejecutar en nuestra terminal el comando bundle exec rubocop para detectar la offenses o errores de sintaxis que no cumple con las convenciones de Ruby, Rails y RSpec.

Comando básicos para test(RSpec)

Aunque por defecto Ruby on Rails nos ofrece Minitest como framework de testing por defecto, vamos a utilizar Rspec como framework de pruebas en este proyecto. A continuación tenemos una lista de los comandos más habituales:

  • Comando por defecto para ejecutar TODOS los specs: bundle exec rspec

  • Comando para ejecutar los specs de un directorio: bundle exec rspec spec/models

  • Comando para ejecutar specs de un archivo: bundle exec rspec spec/controllers/accounts_controller_spec.rb

  • Comando para ejecutar un solo example dentro de un archivo: bundle exec rspec spec/controllers/accounts_controller_spec.rb:8

Gemas instaladas en el proyecto

Este es listado de gemas agregadas al proyecto, se recomienda explorar cada una para entender que usos le podemos dar en nuestro proyecto.

Referencias bibliográficas

Algunas referencias bibliográficas que nos pueden ser de utilidad en el desarrollo de nuestra API.