Ruby on Rails è un ambiente completo per lo sviluppo web. Permette quindi la creazione in toto di un sito complesso. Questo framework è scritto in Ruby, linguaggio di scripting, completamente a oggetti. Con poche linee di codice si sviluppano applicazioni complete. Si può scaricare il pacchetto di installazione da qui: http://www.rubyonrails.org/down. Ovviamente, come ogni applicazione web complessa ha bisogno di un database e di web server per funzionare. Per risolvere tutto con una sola installazione c’è InstantRails che comprende MySql, PhpMyAdmin, Apache, Ruby, Rails ecc. Io che ho già installato server e database avvio il download del pacchetto di installazione per windows, versione 1.8.6-25 (circa 20 Mb). Il pacchetto include l’ interprete e le sue librerie standard, un editor e il “Programming Ruby”, ovvero il manuale del linguaggio. Completata l’ installazione, bisogna aprire il prompt dei comandi e digitare gem install Rails –y per ottenere un ambiente funzionante. Ora io ho già installato il mySql. Trovo in giro per il web un tutorial che sembra proprio spiegare i primi passi con questo tool. Sembra che non occorra configurare subito il database ma proviamo subito a creare un libro di cucina. Le cose che questo libro deve avere:
- Una lista di tutte le ricette.
- Possibilità di creare e modificare ricette
- Assegnare ogni ricetta ad una categoria
Vogliamo creare nella cartella di installazione di Ruby on Rails una directory per il ricettario: C:rubyricettario. Per far questo apriamo un prompt dei comandi e ci portiamo nella cartella di ruby, eseguendo il seguente comando:
C:ruby> rails ricettario
A questo punto rails crea la cartella ricettario con tutte le sottocartelle e i file necessari. In questa cartella viene creato anche un web server WEBrick. In realtà WEBrick è una libreria che fa da web server per testare le applicazioni in Ruby on Rails. Per lanciare questo web server ci portiamo nella cartella ricettario eseguendo il comando:
C:rubyricettario>ruby scriptserver
Ora se apriamo il browser e digitiamo l’ indirizzo http://127.0.0.1:3000/, dovremmo ottenere una pagina di benvenuto di Rails o qualcosa del genere, insomma tutto funziona:

Rails ha già creato l ‘ intera struttura per l’ applicazione. La maggior parte del nostro lavoro sarà quella di creare e modificare files nelle sottocartelle c:rubyricettarioapp
• controllers è la cartella in cui Rails va a cercare le classi di controller. Un controller riceve una richiesta dall’ utente
• views contiene la parte grafica e la converte in Html
• models è la cartella che contiene le classi che modellano gli oggetti contenuti nel database
• helpers contiene le classi di aiuto ai modelli
Controllers e Urls
Le classi di controllers trattano le richieste dell’ utente. L’ Url della richiesta corrisponde ad una classe controller e a un metodo della classe.
Tornando con un altro prompt alla directory ricettario creiamo una nuova classe controllers:
ruby scriptgenerate controller Prova
Questo comando crea un file prova_controller, che contiene una definizione scheletrica per la nostra classe Prova. La cartella controllers si trova in app. Clicchiamo su tale file con il tasto destro e scegliamo modifica. Si aprirà in SciTE. Ogni classe controller contiene un metodo index. Lo creiamo in questo modo:

Digitando l’ Url http://127.0.0.1:3000/prova/ nel browser:

Abbiamo così creato il classico primo programma che stampa Ciao Mondo!
A questo punto possiamo andare oltre. Creiamo il database su MySql
Per dire a Rails come comunicare con il database ricettario, c’è bisogno di editare il file ricettarioconfigdatabase.yml e cambiare il nome del database in ricettario. Possiamo modificarlo con il blocco note.
(A questo punto nei nomi sostituite a Ricetta: Recipe e ricetta: recipe)
Bisogna riavviare il web server affinchè veda le modifiche apportate. Creiamo ora nel nostro database ricettario una tabella ricette con tre campi: id, titolo e istruzioni
Il campo id sarà un int con chiave primaria, auto incrementato, not null
Il campo titolo sarà varchar 255, not null
Il campo istruzioni sarà text, not null
Creiamo il Modello
Creiamo una classe modello per le ricette che conterrà i dati della tabella ricette del database:
ruby scriptgenerate model Ricetta
sempre eseguito nella cartella ricettario. Nella cartella appmodels verrà creata una classe Ricetta
Generiamo un controllo su Ricetta:
ruby scriptgenerate controller Ricetta
che creerà un file chiamato ricetta_controller.rb, in questo file aggiungiamo la linea scaffold :ricetta

Questa singola linea di codice servirà a popolare il database.
Digitando http://127.0.0.1:3000/recipe/new possiamo iniziare a riempire il database
Aggiungiamo al database i campi data e descrizione tra titolo ed istruzioni
Con il comando http://127.0.0.1:3000/recipe/list dal browser elenchiamo tutte le ricette inserite.
Una sola riga di comando scaffold:recipe ha creato funzioni come edit, show, delete. Queste ovviamente sono funzioni base, possiamo crearne delle nostre per completarle e sostituirle.
—————————
Leggi la seconda parte qui.
————————–