Rails Active Storage

Rails 5.2 è arrivato, tra le novità Active Storage troverà moltissimi estimatori … addio Paperclip.

Active Storage supporta svariate modalità di archiviazione per i documenti che vogliamo gestire nelle nostre applicazioni:

  • Disk Service
  • Mirror Service
  • Amazon S3
  • Microsoft Azure Storage Service
  • Google Cloude Storage Service

Rails Action Text

Avete mai avuto l’esigenza di embeddare in una applicazione un editor WYSIWYG ?

Da oggi con Action Text diventa tutto più semplice.

Esistono diverse librerie che consentono di creare un input control dotato di funzioni avanzate di editing, purtroppo utilizzandole sperimentiamo svariate anomalie.  Le gemma action_text mette a disposizione l’editor Trix  all’interno delle nostre applicazioni.

Clean Code

Il libro che vorrei avere scritto io.

Robert Martin (Zio Bob) che sviluppa software dal 1975,  spiega in questo favoloso libro le norme igieniche indispensabili a cui ogni sviluppatore deve conformarsi.
E’ bello, dopo molti anni passati a cercare di spiegare alcune di queste norme igieniche ed essere trattato come un marziano, leggere le stesse scritte da un guru come Robert.

Babbo Natale ci ha portato Ruby 2.6

Il 25 dicembre 2018 è stata rilasciata la versione 2.6 del nostro linguaggio di programmazione preferito.

La novità principale di questa versione è il compilatore JIT integrato che promette grandi incrementi nelle prestazioni.

Al momento il compilatore JIT non funziona con RoR, ma attendiamo fiduciosi 🙂

Appunti RoR: validazioni e save!

Quando utilizziamo ActiveRecord per rendere persistente un oggetto, sappiamo che è possibile dichiarare le validazioni per verificare le caratteristiche dei dati inseriti:

class Person < ActiveRecord::Base
  validates :name, length: { maximum: 20 }
end
Verificare la dimensione dei campi inseriti è fondamentale per evitare di scatenare errori al momento della scrittura del record, qualora il dato inserito ecceda la dimensione del campo.
Spesso nel controller viene usato del codice differente da quello generato dallo scaffold, e scopriamo che per salvare il dato esistono due differenti metodi: save e save! il primo è quello normalmente utilizzado nello scaffold, ma cosa fa save! ?
La differenza è che save se la validazione fallisce non fa nulla (e ritorna nil) invece save! scatena una eccezione.
Pertanto se desideriamo utilizzare save dobbiamo testare il valore di ritorno, se è nil dobbiamo agire in conseguenza del fatto che il dato non è stato salvato.
Come possiamo verificare questa condizione prima di eseguire save ?
semplice utilizzando il metodo valid?
if boo.valid?
   boo.save!  # non scateneremo eccezioni
else
              # dobbiamo correre ai ripari
end

Let code flow