La Console di RUby on Rails permette di interagire direttamente con l’applicazione Rails che si sta scrivendo senza avere la necessità di utilizzare, e quindi di implementare, l’interfaccia Web; la Console di Ruby on Rails si rivelerà molto utile in fase di fase di sviluppo, come ora, per controllare il fuzionamento di una parte dell’applicazione, am anche quando l’applicazione è oramai in produzione per interagire con i dati o per controllare eventuali bug.
Interazione con il modello tramite console Ruby on Rails
Per toccare con mano il funzionamento del modello prima di implementare l’intera applicazione, apriamo il prompt dei comandi e digitiamo ruby script/console per avviare la console di Ruby on Rails.
$ ruby script/console
Loading development environment.
>>
Dalla console è possibile interagire da riga di comando con le componenti delle applicazoni Rails, e quindi anche con il modello che abbiamo creato.
Proviamo ad esempio ad elencare tutti i linkurl che sono ora presenti sul database
>> LinkUrl.find(:all)
=> []
>>
il comando ci restituisce un array vuoto. Creiamo allora un nuoco linkurl con il comando LinkUrl.new
>> l = LinkUrl.new => #
Creato l’oggetto possiamo vedere che tutti gli attributi indicati nel file del migrate sono presenti; tutti i campi sono vuoti a meno di votes che, come avevamo chiesto, è stato impostato a zero.
Per accedere ai singoli attributi dell’oggetto è sufficente far seguire il nome dell’oggetto, in questo caso l, da un punto e dal nome dell’oggeto
>> l.votes
=> 0
>> l.title
=> ""
>> l.url
=> ""
>> l.description
=> ""
>> l.created_at
=> nil
>>
Assegnamo un valore all’attributo url; trattandosi di una stringa lo indichiamo fra virgolette
>> l.url = "http://www.yahoo.com"
=> "http://www.yahoo.com"
se ora chiediamo di nuovo di visualizzare l’oggetto l, l’attributo url è valorizzato
>> l => #
Sul database però non è stato salvato ancora nulla; per salvare un nuovo oggetto nel database è necessario richiedere esplicitamente il salvataggio con il metodo save
>> l.save
=> false
Rails ci informa, restituendo false, che l’oggetto non è stato salvato; vediamo cosa ha impedito il salvataggio consultando gli errori abbinati all’oggetto l
>> l.errors
[...]
Osserviamo in particolare il contenuto della variabile @error:
@errors={
"title"=>["Titolo non presente - specificare un titolo"],
"description"=>["Descrizione non presente - specificare la descrizione"]
}
CI sono quindi due errori, uno relativo al titolo non presente e uno relativo al metodo description. l’oggetto l non è stato quindi salvato proprio per le regole di validazione che abbiamo introdotto in precedenza nel modello.
Compiliamo quindi i campi title e description:
>> l.title = "Yahoo"
=> "Yahoo"
>> l.description = "Lorem ipsum..."
=> "Lorem ipsum..."
>> l.save
=> true
>>
questa volta il salvataggio è andato a buon fine
>> LinkUrl.find(:all).length
=> 1
>>
