Archivi categoria: Ruby

E’ uscito RAILS 6

Come promesso, la prima beta di RoR 6.0 è stata rilasciata!
Tra le novità Action Mailbox, Action Text, il supporto a database multipli (finalmente non dovremo fare le acrobazie per scrivere un task che converte un DB in un altro), il supporto multi-core durante l’esecuzione dei test.

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.

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