Anche se il database predefinito SQLite3 funziona benissimo con Ruby on Rails , non dovremmo usarlo in alcuni casi. Ad esempio, se alla tua applicazione Rails accedono contemporaneamente un numero elevato di utenti, SQLite non è raccomandato. Dovremmo provare database più robusti come MySQL o PostgreSQL, che forniscono scalabilità, concorrenza, centralizzazione e controllo. Sapevamo già come usare MySQL con l'applicazione Rails . Oggi vedremo come utilizzare PostgreSQL con l'applicazione Ruby on Rails in Ubuntu Linux.
Prerequisiti
Presumo che tu abbia già installato l'ultimo Ruby on Rails sul tuo sistema Linux. In caso contrario, fare riferimento alla seguente guida.
- Come installare Ruby On Rails in Linux
1. Installa PostgreSQL
Per installare PostgreSQL in Debian, Ubuntu e i suoi derivati, esegui:
$ sudo apt install postgresql postgresql-contrib libpq-dev
Questo comando installerà PostgreSQL insieme a tutte le dipendenze richieste. Qui, il libpq-dev
è una libreria PostgreSQL che consente ai programmi client di passare query al server di backend PostgreSQL e di ricevere i risultati di queste query. Questa libreria è necessaria per connettersi a PostgreSQL quando configuri un'applicazione Rails.
Assicurati che il servizio postgresql sia avviato e abilitato all'avvio:
$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql
Per visualizzare lo stato corrente del servizio postgresql, eseguire:
$ systemctl status postgresql
1.1. Crea un nuovo ruolo nel database
Abbiamo bisogno di un utente di database dedicato (ruolo) per creare e configurare database o la nostra applicazione Rails.
Per creare un nuovo ruolo del database in PostgreSQL, esegui il seguente comando dal tuo Terminale:
$ sudo -u postgres createuser -s ostechnix -P
Ecco,
sudo -u postgres
- ti permette di eseguire il comando dapostgres
conto.createuser -s ostechnix
- crea un nuovo ruolo chiamatoostechnix
con privilegi di super utente.-P
- ti chiede di inserire la password per il nuovo ruolo.
2. Usa PostgreSQL con l'applicazione Ruby on Rails in Linux
Per creare una nuova applicazione Rails chiamata ostechnixapp
e usa PostgreSQL come database predefinito, esegui:
$ rails new ostechnixapp -d postgresql
Questo creerà un'applicazione Rails chiamata ostechnixapp
in una directory denominata ostechnixapp
e installa le dipendenze gem già menzionate in Gemfile
utilizzando bundle install
.
Dopo aver creato la ostechnixapp
applicazione, passa alla sua directory:
$ cd ostechnixapp/
Modifica il file di configurazione del database dell'applicazione:
$ vi config/database.yml
Sotto il default
sezione, aggiungi il ruolo del database PosgreSQL e la relativa password che abbiamo creato nel passaggio precedente:
[...] default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see Rails configuration guide # https://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: ostechnix password: Password123#@! [...]
Sostituisci il nome utente e la relativa password con la tua. Premi ESC
e digita :wq
per salvare e chiudere il file.
Ora crea il nuovo database per la tua applicazione Rails usando il comando:
$ rake db:create
Questo creerà due database con il nome della tua applicazione Rails. Ad esempio, se il nome dell'applicazione è ostechnixapp, verrà creato ostechnixapp_development
e ostechnixapp_test
.
Created database 'ostechnixapp_development' Created database 'ostechnixapp_test'
Puoi verificarlo se i database sono stati creati correttamente anche da PosgreSQL.
Accedi a PosgreSQL:
$ sudo -u postgres psql
Nel prompt di postgresql, esegui \l
per elencare i database disponibili:
postgres=# \l
Risultato di esempio:
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges --------------------------+-----------+----------+---------+---------+----------------------- ostechnixapp_development | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 | ostechnixapp_test | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 | postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (5 rows) postgres=#
Esci dal prompt di PostgreSQL immettendo \q
.
postgres=# \q
Ora avvia il tuo server web Rails usando il comando:
$ rails server -b 0.0.0.0
Questo avvierà la tua applicazione Rails sulla porta predefinita 3000
. Qui, abbiamo passato l'argomento -b 0.0.0.0
per accedere all'applicazione Rails da qualsiasi macchina sulla rete locale.
Apri il tuo browser web e accedi alla tua pagina di test Rails navigando all'URL:http://ip-address:3000
.
Se desideri utilizzare una porta diversa, passa -p flag insieme al numero di porta come di seguito:
$ rails server -b 0.0.0.0 -p 8080
Ora è possibile accedere all'applicazione Rails da questo URL:http://ip-address:8080
.
3. Elimina l'applicazione Rails
Se hai utilizzato il database predefinito che è SQLite, puoi eliminare l'applicazione Rails semplicemente eliminando la sua directory dell'app.
$ rm -fr ostechnixapp
Se hai utilizzato PostgreSQL, per prima cosa devi eliminare i relativi database della tua applicazione usando il comando:
$ rake db:drop
E quindi eliminare la directory dell'applicazione:
$ rm -fr ostechnixapp
Conclusione
Ora sai come creare un'applicazione Rails con PostgreSQL come database. Come ho già detto, se la tua applicazione viene utilizzata attivamente da un gran numero di utenti, devi utilizzare PostgreSQL o MySQL. Questo può essere utile anche quando vuoi ridimensionare il database in futuro, gestire il tuo database da un sistema di rimozione.
Lettura correlata:
- Configura la connessione al database utilizzando la variabile di ambiente in Rails