Questa guida spiega perché è necessario utilizzare una variabile di ambiente per connettersi a un database e come configurare la connessione al database utilizzando la variabile di ambiente nell'applicazione Rails in Linux.
Perché utilizzare la variabile di ambiente per configurare il database?
Ogni applicazione Rails interagirà con il rispettivo database. Esistono due modi per connettersi a un database in un'applicazione Rails. Puoi connetterti a un database tramite un file di configurazione del database chiamato config/database.yml
o utilizzando una variabile di ambiente chiamata ENV['DATABASE_URL']
. Ti abbiamo già mostrato come creare un'applicazione Rails con un database MySQL o un database PostgreSQL . In queste due guide, abbiamo configurato la connessione al database utilizzando config/database.yml
file.
Se sei l'unica persona che lavora in un progetto Rails, va bene memorizzare le credenziali del database in config/database.yml
file. Ma se il progetto è ospitato in un repository Git pubblico e molti sviluppatori ci stanno lavorando, non è consigliabile archiviare informazioni sensibili come le password in config/database.yml
file. Inoltre, i dettagli del database di ogni sviluppatore possono essere diversi, ad esempio nome utente e password. Ogni volta che inseriamo il codice, si verificherà un conflitto in un file. Questo è il motivo per cui è necessario archiviare le credenziali del database in una variabile di ambiente anziché scriverle direttamente nel file di configurazione del database.
Configura la connessione al database utilizzando la variabile di ambiente nell'applicazione Rails
Presumo che tu abbia l'ultimo Ruby on Rails nella tua macchina Linux. Se non hai ancora installato Ruby on Rails, fai riferimento alla seguente guida.
- Come installare Ruby On Rails in Linux
Quindi, crea una nuova applicazione Rails. Se desideri utilizzare MySQL con l'applicazione Rails, esegui il comando seguente per creare una nuova applicazione Rails, ovvero ostechnixapp
:
$ rails new ostechnixapp -d mysql
Se vuoi usare PostgreSQL con l'applicazione Rails, crea la nuova applicazione Rails chiamata ostechnixapp
come di seguito:
$ rails new ostechnixapp -d postgresql
Quindi, aggiungi una nuova variabile di ambiente con la password dell'utente del database nel file del profilo dell'utente, ad esempio ~/.bashrc
.
$ echo 'export OSTECHNIXAPP_DATABASE_PASSWORD="Database_User_Password"' >> ~/.bashrc
Nel comando precedente, sostituisci "OSTECHNIXAPP"
con il nome dell'applicazione e "Database_User_Password"
con la password dell'utente del database effettivo.
Fonte il ~/.bashrc
per aggiornare immediatamente le modifiche:
$ source ~/.bashrc
Ora passa alla directory dell'applicazione:
$ cd ostechnixapp/
Modifica il file di configurazione del database dell'applicazione:
$ vi config/database.yml
Se stai usando MySQL, aggiungi il nome utente del database e la variabile di ambiente che abbiamo aggiunto a ~/.bashrc
file nel passaggio precedente, sotto il default
sezione. Ecco cosa ho aggiunto nel file di configurazione di MySQL:
[...] default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: <%= ENV['OSTECHNIXAPP_DATABASE_PASSWORD'] %> socket: /var/run/mysqld/mysqld.sock [...]
Ancora una volta, devi sostituire OSTECHNIXAPP_DATABASE_PASSWORD
con la variabile di ambiente corretta.
Se stai usando PostgreSQL, aggiungi il ruolo del database e la variabile di ambiente in default
sezione come di seguito:
[...] 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: <%= ENV['OSTECHNIXAPP_DATABASE_PASSWORD'] %> [...]
Dopo aver aggiunto il ruolo utente del database e la variabile di ambiente, premere ESC
digitare e digitare :wq
per salvare le modifiche e uscire dal file.
Infine, crea il database per la tua applicazione Rails usando il comando:
$ rake db:create
Questo comando creerà due database:ostechnixapp_development
e ostechnixapp_test
.
Created database 'ostechnixapp_development' Created database 'ostechnixapp_test'
Ora avvia l'applicazione Rails sul server web integrato chiamato puma usando il comando:
$ rails server -b 0.0.0.0
Apri il tuo browser web e accedi all'applicazione Rails navigando su http://ip-address:3000
URL. Sarai accolto con la pagina di test predefinita di Rails:
Come ho già fatto, se non vuoi rivelare la password del database ad altri sviluppatori, dovresti configurare la connessione al database con una variabile di ambiente in un'applicazione Rails. Se sei l'unico sviluppatore, puoi semplicemente utilizzare il file di configurazione del database predefinito.