Repositorio base para Caso ONG de Ruby.
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
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 enworking directory
ostaged
. -
git add [nombre archivo]
: nos permite 'subir' un archivo a lastaging area
-
git commit -m 'Mensage de commit'
: una vez que todos los archivos que vamos a registrar como modificados estan en lastaging area
, podes usar este comando para registrar unafotos
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 delrepositorio remoto
a nuestrorepositorio local
. -
git checkout [nombre-de-la-rama-de-destino]
: nos permite cambiarnos debranch
. -
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 utilizargit rebase main
para traer los cambios que contenga la branchmain
. -
git push origin [nombre-de-la-rama]
: nos permite subir los últimos cambios de nuestrorepositorio local
alrepositorio remoto
. Recuerda que NUNCA hacergit push origin main
ya que primero debes crear unpull request
en github para discutir los cambios realizados con el equipo. Si elpush
es realizado despues de unrebase
, es habitual agregar el flag--force-with-lease
para forzar la reescritura del historial de 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 deJira
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 ejemplofeat 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
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.
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
Este es listado de gemas agregadas al proyecto, se recomienda explorar cada una para entender que usos le podemos dar en nuestro proyecto.
- dotenv
- jbuilder
- rspec-rails
- factory_bot_rails
- pry-byebug
- pry-rails
- annotate
- brakeman
- rails_best_practices
- rubocop
- rubocop-performance
- rubocop-rails
- rubocop-rspec
- faker
- shoulda-matchers
- simplecov
Algunas referencias bibliográficas que nos pueden ser de utilidad en el desarrollo de nuestra API.