RoR e database: installare MySQL
Ruby On Rails è stato sviluppato implementando con particolare attenzione le funzionalità destinate all'interazione del framework con le basi di dati e le informazioni in esse archiviate; tra i numerosi DBMS supportati da RoR, per citare soltanto alcuni di quelli rilsciati sotto licenza Open Source, è possibile fare riferimento a MySQL, SQLite e PostgreSQL.
Dato che il Database Manager di riferimento per questa trattazione sarà MySQL, la prima operazione da compiere sarà quella relativa all'installazione della Gem necessaria per il dialogo con questa applicazione; una volta aperto il terminale dovremo quindi digitare la seguente istruzione che potrà essere lanciata da qualsiasi percorso:
gem install mysql
In alternativa (consigliata) è possibile installare la Gem "mysql2", una libreria veloce e molto stabile per l'interazione con MySQL:
gem install mysql2
Fatto questo, dovremo recarci sulla directory d'installazione di RoR e raggiungere la cartella "project/my_app/config/" precedentemente creata tramite il comando "rails new", in essa è presente il file "database.yml"; aprendolo con un editor di testo (è sufficiente il Blocco Note) noteremo come di default il progetto presenti una configurazione relativa al DBMS SQLite:
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# 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: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
Quest'ultima dovrà quindi essere modificata in modo da utilizzare MySQL come DBMS predefinito, prima di fare questo sarà però necessario fare riferimento ai tre ambienti previsti da RoR per l'interazione con le basi di dati:
- "development": è l'ambiente destinato allo sviluppo locale dell'applicazione prima delle fasi di test e di produzione (messa on-line);
- "test": è l'ambiente utilizzabile in seguito alla fase di sviluppo per l'esecuzione dei test automatizzati sull'applicazione prima della fase di produzione;
- "production": è l'ambiente a cui farà riferimento l'applicazione una volta resa pubblicamente disponibile come servizio.
Per modificare il file "database.yml" in modo che questo interagisca con MySQL, potremo quindi utilizzare delle nuove impostazioni di configurazione sul modello delle seguenti:
development:
adapter: mysql2
encoding: utf8
database: my_app_development
pool: 5
username: nome_utente
password: password_utente
host: localhost
port: 3306
socket: /tmp/mysql.sock
test:
adapter: mysql2
encoding: utf8
database: my_app_test
pool: 5
username: nome_utente
password: password_utente
host: localhost
port: 3306
socket: /tmp/mysql.sock
production:
adapter: mysql2
encoding: utf8
database: my_app_production
pool: 5
username: nome_utente
password: password_utente
host: localhost
port: 3306
socket: /tmp/mysql.sock
Per tutti e tre gli ambienti di riferimento sarà quindi necessario indicare:
- L'adapter, nel nostro caso "mysql2" che permetterà l'interazione con il DBMS;
- l'encoding (codifica di caratteri) Unicode relativo ai dati manipolati, nel nostro caso verrà utilizzato UTF-8;
- il nome del database che dovrà essere diverso per ciascun ambiente;
- il numero massimo (pool) delle connessioni indirizzabili al Database Manage per ciascun thread (processo)r;
- la username relativa all'utente attraverso il quale l'applicazione interagirà con il DBMS e la password necessaria per l'autenticazione dell'utente stesso;
- l'host di MySQL, cioè il nome della macchina che ospita il servizio che è generalmente "localhost" nelle istallazioni locali;
- la "porta d'ascolto" utilizzata dal Database Manager per attendere le richieste dai client, "3306" è la porta predefinita assegnata in installazione;
- il percorso al socket per la connessione con MySQL.
Una volta effettuate e salvate le modifiche richieste (ricordiamoci di modificare il parametri associati a "username" e "password" con quelli relativi alla nostra installazione di MySQL), RoR ci permetterà di creare i database di sviluppo e test precedentemente definiti da terminale. Per fare ciò utilizzeremo un'istruzione basata sulla Gem "rake", per prima cosa, quindi, dovremo installare quest'ultima da un qualsiasi percorso sul file system:
gem install rake
Rake è in pratica un "command runner", cioè un tool che ci permetterà di accedere velocemente a comandi Rails utili per lo sviluppo della nostra applicazione; ora finalmente potremo lanciare il comando per la generazione delle basi di dati dal percorso della nostra applicazione:
C:\Ruby193\project\my_app>rake db:create
Ottenuti i database desiderati (per il momento ancora vuoti), sarà possibile procedere con la creazione di una prima applicazione basata su Rails.