Ruby on Rails Tutorial: Creazione Progetto e Database

Per questo tutorial realizzeremo in Ruby on Rails un portale web che vuole imitare digg o reddit; cerchiamo di descrivere il comportamento del portale elencandone i casi d’uso:

  • Caso #1: un visitatore del sito accede alla home page e consulta l’elenco dei link suggeriti dagli altri utenti; a fianco di ogni link è presente il nome dell’utente che ha postato il link e il numero dei voti che ha accumulato da parte degli altri utenti.
  • Caso #2: un visitatore del sito internet si registra al portale per poter contribuire postando dei nuovi link o attribuendo voti ai link già esistenti
  • Caso #3: un visitatore registrato posta un nuovo link inserendo URL, titlolo e una breve descrizione (massimo 255 caratteri). Il portale controlla che l’URL non sia già stato suggerito e che non sia quindi già presente all’interno del sistema, e se non è presente mostra il nuovo link sulla propria home page

Creazione del progetto in Ruby on Rails

Iniziamo creando lo scheletro base del progetto con il comando rails voteup; all’esecuzione del comando si vedranno a video una serie di file e cartelle che saranno create automaticamente dal comando rails; il nome e la posizione del file e delle cartelle sono state studiate in modo da rendere facile la navigazione del progetto e da offrire uno standard per tutti gli sviluppatori Ruby on Rails.

Spostiamoci all’interno della cartella voteup appena creata. Tutti i comandi impartiti da riga di comando verranno lanciati da questa cartella; è buona norma lasciare almeno un prompt dei comandi sempre pronto e posizionato della cartella principale del proprio progetto.

Creazione dei database

La convenzione vuole che ogni progetto abbia tre database distinti: uno da utilizzare durante la fase di sviluppo (development), uno da utilizzare per i test automatici (test) e uno per la produzione (production).

In realtà l’intero framework si comporta in modo differente sulla base della modalità di funzionamento prescelta; in modalità development si collegherà al database destinato allo sviluppo e, ad esempio, caricherà il codice che abbiamo scritto ad ogni caricamento di una pagina in modo da rendere subito attive le modifiche al codice; in modalità production invece si collegherà al database di produzione e caricherà i file del progetto una volta sola in modo da aumentare la velocità di esecuzione.

Procediamo con la configurazione del database; per ora ci preoccupiamo solo del database development e test. Accedendo al file config/database.yml per indicare i parametri di connessione al database ci accorgiamo che il file è già compilato con dei dati di esempio; basterà quindi modificare i paramentri che ci interessano, ad esempio il nome utente e la password. Lasciamo intatti i nomi dei database dal momento che sono stati scelti per essere esplicativi (voteup_development è il database di produzione per l’applicazione voteup e così via).


development:
  adapter: mysql
  database: voteup_development
  username: root
  password: password
  host: localhost
# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  database: voteup_test
  username: root
  password: password
  host: localhost

Ora creiamo i due database che andremo ad utilizzare, development e test. Le istruzioni riportate sotto fanno riferimento alla creazione dei database da riga di comando; è possibile creare i database anche con l’interfaccia grafiche che preferite, come quella messa a disposizione da Instant Rails.


$ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2 to server version: 5.0.22-standard
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> create database voteup_development;
Query OK, 1 row affected (0.07 sec)
mysql> create database voteup_test;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
$

Il primo passo in Ruby on Rails

Fino a qui abbiamo visto che:

  • Ruby on Rails fornisce un comando dedicato alla creazione di un nuovo progetto
  • Questo comando crea la struttura base del progetto rendendo disponibili una serie di file da modificare solo in alcuni parametri
  • La configurazione per il collegamento al database avviene nel file config/database.yml
  • Ruby on Rails prevede la creazione distinta di tre database: development, test, production