Comment utiliser PostgreSQL avec votre application Ruby on Rails sur macOS

introduction

Lorsque vous utilisez le framework Web Ruby on Rails, votre application est configurée par défaut pour utiliser SQLite. SQLite est une base de données relationnelle légère, portable et conviviale qui fonctionne particulièrement bien dans les environnements à faible mémoire et qui fonctionnera bien dans de nombreux cas. Toutefois, pour les applications très complexes qui nécessitent une intégrité des données et une extensibilité des programmes plus fiables, une base de données PostgreSQL constituera un choix plus robuste et plus flexible. Pour configurer votre configuration Ruby on Rails de manière à utiliser PostgreSQL, vous devez effectuer quelques étapes supplémentaires pour le rendre opérationnel.

Dans ce didacticiel, vous allez configurer un environnement de développement Ruby on Rails connecté à une base de données PostgreSQL sur une machine macOS locale. Vous allez installer et configurer PostgreSQL, puis tester votre configuration en créant une application Rails qui utilise PostgreSQL en tant que serveur de base de données.

Conditions préalables

Ce tutoriel nécessite les éléments suivants:

  • Un ordinateur ou une machine virtuelle sur laquelle macOS est installé, avec un accès administratif à cette machine et une connexion Internet. Ce tutoriel a été testé sur macOS 10.14 Mojave.

  • Un environnement de développement Ruby on Rails installé sur votre machine macOS. Pour configurer cela, suivez notre guide sur Comment installer Ruby on Rails avec Rbenv sur macOS. Ce tutoriel utilisera la version 2.6.3 de Ruby et 5.2.3 de Rails; pour obtenir des informations sur les dernières versions, consultez les sites officiels des sites Ruby et Rails.

Étape 1 - Installation de PostgreSQL

Afin de configurer Ruby on Rails pour créer votre application Web avec PostgreSQL en tant que base de données, vous devez d’abord installer la base de données sur votre ordinateur. Bien qu’il existe nombreuses manières d’installer PostgreSQL sur macOS, ce tutoriel utilisera le gestionnaire de paquets Homebrew.

Il existe plusieurs packages Homebrew pour installer différentes versions de PostgreSQL. Pour installer la dernière version, exécutez la commande suivante:

brew install postgresql

Si vous souhaitez télécharger une version spécifique de PostgreSQL, remplacez + postgresql + dans la commande précédente par le paquet souhaité. Vous pouvez trouver les packages disponibles sur le site Homebrew.

Ensuite, incluez le binaire PostgreSQL dans votre variable + PATH afin d’accéder aux outils de ligne de commande de PostgreSQL, en veillant à remplacer le` ++ `par le numéro de version que vous utilisez:

echo 'export PATH="/usr/local/opt/postgresql@/bin:$PATH"' >> ~/.bash_profile

Ensuite, appliquez les modifications que vous avez apportées à votre fichier + ~ / .bash_profile + à votre session shell actuelle:

source ~/.bash_profile

Pour démarrer le service et l’activer au démarrage, connectez-vous à:

brew services start postgresql@

Assurez-vous que l’installation a réussi:

postgres -V

Vous obtiendrez le résultat suivant:

Outputpostgres (PostgreSQL)

Une fois PostgreSQL installé, l’étape suivante consiste à créer un rôle que votre application Rails utilisera ultérieurement pour créer votre base de données.

Étape 2 - Création d’un rôle de base de données pour votre application

Dans PostgreSQL, roles peut être utilisé pour organiser les autorisations et les autorisations. Lorsque vous démarrez PostgreSQL avec Homebrew, un rôle de superutilisateur est automatiquement créé avec votre nom d’utilisateur macOS. Afin de garder ces privilèges de superutilisateur séparés de l’instance de base de données que vous utilisez pour votre application Rails, vous allez créer un nouveau rôle avec moins d’accès.

Pour créer un nouveau rôle, exécutez la commande suivante en remplaçant «++» par le nom que vous souhaitez attribuer au rôle:

createuser -P -d

Dans cette commande, vous avez utilisé + createuser + pour créer un rôle nommé ++. L’indicateur + -d + a donné au rôle l’autorisation de créer de nouvelles bases de données.

Vous avez également spécifié l’indicateur + -P +, ce qui signifie que vous serez invité à entrer un mot de passe pour votre nouveau rôle. Entrez le mot de passe souhaité en veillant à l’enregistrer afin que vous puissiez l’utiliser ultérieurement dans un fichier de configuration.

Si vous n’avez pas utilisé l’indicateur + -P + et souhaitez définir un mot de passe pour le rôle après l’avoir créé, entrez dans la console PostgreSQL à l’aide de la commande suivante:

psql postgres

Vous recevrez le résultat suivant, ainsi que l’invite de la console PostgreSQL:

Outputpsql ()
Type "help" for help.

postgres=#

La console PostgreSQL est indiquée par l’invite + postgres = # +. À l’invite de PostgreSQL, entrez cette commande pour définir le mot de passe du nouveau rôle de base de données, en remplaçant le nom en surbrillance par celui que vous avez créé:

\password

PostgreSQL vous demandera un mot de passe. Entrez le mot de passe souhaité à l’invite, puis confirmez-le.

Maintenant, quittez la console PostgreSQL en entrant cette commande:

\q

Votre invite habituelle va maintenant réapparaître.

Au cours de cette étape, vous avez créé un nouveau rôle PostgreSQL sans privilèges de superutilisateur pour votre application. Vous êtes maintenant prêt à créer une nouvelle application Rails qui utilise ce rôle pour créer une base de données.

Étape 3 - Création d’une nouvelle application Rails

Avec votre rôle configuré pour PostgreSQL, vous pouvez maintenant créer une nouvelle application Rails configurée pour utiliser PostgreSQL en tant que base de données.

Tout d’abord, accédez à votre répertoire personnel:

cd ~

Créez une nouvelle application Rails dans ce répertoire, en remplaçant ++ par ce que vous souhaitez appeler votre application:

rails new  -d=postgresql

L’option + -d = postgresql + définit PostgreSQL comme base de données.

Une fois cette commande exécutée, un nouveau dossier nommé «++» apparaîtra dans votre répertoire personnel, contenant tous les éléments d’une application Rails de base.

Ensuite, déplacez-vous dans le répertoire de l’application:

cd

Maintenant que vous avez créé une nouvelle application Rails et que vous vous êtes déplacé dans le répertoire racine de votre projet, vous pouvez configurer et créer votre base de données PostgreSQL à partir de votre application Rails.

Étape 4 - Configuration et création de votre base de données

Lors de la création des bases de données + développement et` + test` pour votre application, Rails utilisera le rôle PostgreSQL que vous avez créé à l’étape 2. Pour vous assurer que Rails crée ces bases de données, modifiez le fichier de configuration de la base de données de votre projet. Vous créerez ensuite vos bases de données.

L’une des modifications de configuration à effectuer dans votre application Rails consiste à ajouter le mot de passe du rôle PostgreSQL que vous avez créé à la dernière étape. Pour protéger les informations sensibles telles que les mots de passe, il est conseillé de les stocker dans une variable d’environnement plutôt que de les écrire directement dans votre fichier de configuration.

Pour stocker votre mot de passe dans une variable d’environnement lors de la connexion, exécutez la commande suivante, en remplaçant "" par le nom de votre application et "" par le mot de passe créé à la dernière étape:

echo 'export _DATABASE_PASSWORD=""' >> ~/.bash_profile

Cette commande écrit la commande + export dans votre fichier` + ~ / .bash_profile` afin que la variable d’environnement soit définie lors de la connexion.

Pour exporter la variable de votre session en cours, utilisez la commande + source +:

source ~/.bash_profile

Maintenant que vous avez enregistré votre mot de passe dans votre environnement, il est temps de modifier le fichier de configuration.

Ouvrez le fichier de configuration de la base de données de votre application dans votre éditeur de texte préféré. Ce tutoriel utilisera + nano +:

nano config/database.yml

Dans la section + default +, recherchez la ligne + pool: <% = ENV.fetch (" RAILS_MAX_THREADS ") {5}%> + et ajoutez les lignes en surbrillance suivantes, en indiquant vos informations d’identification et la variable d’environnement. vous avez créé. Ça devrait ressembler a quelque chose comme ca:

config / database.yml

...
default: &default
 adapter: postgresql
 encoding: unicode
 # For details on connection pooling, see Rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>



development:
 <<: *default
 database: appname_development
...

Cela fera que l’application Rails exécutera la base de données avec le rôle et le mot de passe corrects. Sauvegardez et quittez en appuyant sur + CTRL + X +, + Y +, puis + ENTER +.

Pour plus d’informations sur la configuration des bases de données dans Rails, voir la documentation Rails.

Maintenant que vous avez apporté des modifications à + ​​config / database.yml +, créez les bases de données de votre application à l’aide de la commande + rails +:

rails db:create

Une fois que Rails a créé la base de données, vous recevrez le résultat suivant:

OutputCreated database '_development'
Created database '_test'

Comme le suggère le résultat, cette commande crée une base de données + development et` + test` sur votre serveur PostgreSQL.

Vous avez maintenant une base de données PostgreSQL connectée à votre application Rails. Pour vous assurer que votre application fonctionne, la prochaine étape consiste à tester votre configuration.

Étape 5 - Test de votre configuration

Pour vérifier que votre application est capable d’utiliser la base de données PostgreSQL, essayez d’exécuter votre application Web afin qu’elle apparaisse dans un navigateur.

Tout d’abord, vous utiliserez le serveur Web intégré pour Rails, Puma, pour servir votre application. Ce serveur Web est livré avec Rails automatiquement et ne nécessite aucune configuration supplémentaire. Pour servir votre application, exécutez la commande suivante:

rails server --binding=127.0.0.1

+ - binding lie votre application à une adresse IP spécifique. Par défaut, cet indicateur liera Rails à + ​​0.0.0.0 +, mais comme cela signifie que Rails écoutera toutes les interfaces, il est plus sûr d’utiliser + 127.0.0.1 + pour spécifier le + localhost +. Par défaut, l’application écoute sur le port + 3000 +.

Une fois que votre application Rails est en cours d’exécution, votre invite de commande disparaîtra, remplacée par cette sortie:

Output=> Booting Puma
=> Rails  application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version  (ruby -p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop

Pour vérifier si votre application est en cours d’exécution, ouvrez une nouvelle fenêtre de terminal sur votre serveur et utilisez la commande + curl + pour envoyer une demande à +127.0.0.1: 3000 +:

curl http://127.0.0.1:3000

Vous recevrez beaucoup de sortie en HTML, se terminant par quelque chose comme:

Output...
       <strong>Rails version:</strong><br />
       <strong>Ruby version:</strong>  (x86_64-darwin18)
     </p>
   </section>
 </div>
</body>
</html>

Vous pouvez également accéder à votre application Rails dans un navigateur Web local en visitant:

http://127.0.0.1:3000

À cette adresse URL, vous trouverez une page d’accueil Ruby on Rails:

image: https: //assets.digitalocean.com/articles/cart_66733/Rails_Welcome.png [Page d’accueil de Ruby on Rails]

Cela signifie que votre application est correctement configurée et connectée à la base de données PostgreSQL.

Conclusion

Dans ce didacticiel, vous avez créé une application Web Ruby on Rails configurée pour utiliser PostgreSQL en tant que base de données sur une machine macOS locale. Si vous souhaitez en savoir plus sur le langage de programmation Ruby, consultez notre série Comment coder dans Ruby.

Pour plus d’informations sur le choix d’une base de données pour votre application, consultez notre tutoriel sur les différences et les cas d’utilisation de https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison. -des-systèmes-de-gestion-de-bases de données relationnelles [SQLite, PostgreSQL et MySQL]. Si vous souhaitez en savoir plus sur l’utilisation des bases de données, consultez notre article An Introduction aux requêtes dans PostgreSQL ou explorez les https de DigitalOcean: //www.digitalocean.com/products/managed-databases/[Managed Databases product.

Related