Guidelines 1.2

Protocollo

Creazione di un nuovo progetto Rails

Installa Suspenders.

 gem install suspenders

Crea l'app

 suspenders new-project

Set up di un progetto Rails

Ottieni il codice:

 git clone git@github.com:organization/project.git

Prepara le dipendenze dell'app.

cd project
./bin/setup

Usa il plugin Heroku config per copiare le variabili d'environment:

heroku config:pull --remote staging

Elimina le righe in .env superflue (es. <code>S3_SECRET)

Utilizza Foreman per lanciare l'applicazione:

foreman start

Mantenimento di un progetto Rails

  • Evita di includere in version control file specifici della propria macchina o della propria modalità di sviluppo.
  • Non includere in version control file contenenti segreti o chiavi private.

Lavora su una nuova feature

Crea una nuovo branch locale per la feature, forkando da master, e aggiungendo le tue iniziali come prefisso del branch.

 git checkout master
 git pull
 git checkout -b <branch-name>

Effettua spesso rebase dal master per includere eventuali modifiche provenienti da remoto.

 git fetch origin
 git rebase origin/master

Risolvi eventuali conflitti, e prosegui col rebase.

 # edit conflicted files on editor
 git add -all
 git rebase --continue

Quando una feature è completa ed i test passano, effettua un commit.

 rake
 git add --all
 git status
 git commit --verbose

Scrivi un buon messaggio di commit.

 Present-tense summary under 50 characters
 * More information about commit (under 72 characters).
 * More information about commit (under 72 characters).

 http://project.management-system.com/ticket/123

Pusha il tuo branch.

 git push origin <branch-name>

Procedi con l'effettuare una pull request. Richiedi un code review sulla stanza di development su Hipchat.

Effettua un code review

Un membro del team diverso dall'autore della feature effettua la review del codice, seguendo le linee guida per evitare incomprensioni.

Il reviewer quando possibile commenta e chiede chiarimenti direttamente all'interno dell'interfaccia web di Gitlab/Github/Bitbucket.

Il reviewer può effettuare piccoli cambiamenti al codice in prima persona, effettuando un checkout del branch.

 git checkout <branch-name>
 rake db:migrate db:test:prepare
 rake
 git diff staging/master..HEAD

Una volta testata la modifica su browser e lanciati i test, può committare e pushare la modifica sul branch remoto.

Quando il reviewer è soddisfatto del risultato finale e la piattaforma di continuous integration non notifica errori, commenta sulla pull request Ready to merge.

Merge di una feature

Procedi con un rebase interattivo. Effettua lo squash di commit minori o temporanei (es. “Fix whitespace”) su pochi commit significativi con tutti i test verdi. Modifica il messaggio di commit dove non chiari o espliciti. Assicurati che ogni commit finale passi i test.

 git checkout <branch-name>
 git fetch origin
 git rebase -i origin/master
 rake

Ricontrolla la lista di commit definitiva. Controlla i file modificati. A questo punto mergia il branch su master, senza merge bubbles.

 git log origin/master..<branch-name>
 git diff --stat origin/master
 git checkout master
 git merge <branch-name> --ff-only
 git push

Rimuovi il feature branch da remoto e da locale.

 git push origin --delete <branch-name>
 git branch --delete <branch-name>

Deploy di una feature

Controlla la lista di nuovi commit. Controlla i file modificati. A questo punto pusha sul branch staging, deployando.

 git fetch staging
 git log staging/master..master
 git diff --stat staging/master
 git push staging

Se necessario, lancia le nuove migrazioni and restarta i dynos.

 heroku run rake db:migrate --remote staging
 heroku restart --remote staging

Testa la nuova feature su browser e deploya in produzione, seguendo il medesimo iter.

 git fetch production
 git log production/master..master
 git diff --stat production/master
 git push production
 heroku run rake db:migrate --remote production
 heroku restart --remote production
 watch heroku ps --remote production

Chiudi la pull request and commenta Merged.