Utiliser PG pour stocker les objets ActiveStorage

Active Storage utilise habituellement le système de fichiers hôte pour stocker ses objets, ce qui peut poser problème si l’application Rails est hébergée chez Heroku où le système de fichiers est éphémère…

Pour éviter les mauvaises surprises, les objets ActiveStorage peuvent être stockés dans PG et donc de manière pérenne.

L’autre avantage est de pouvoir sauvegarder toutes ces données en une fois, en un seul backup.

Pour installer cette facilité, procédez comme suit:

  • Ajouter le Gem dans votre Gemfile
# ActiveStorage Service to store files PostgeSQL.
gem 'active_storage-postgresql'
  • Lancez l’initialisation du Gem
$ rails active_storage:postgresql:install
$ rails db:migrate
  • Configurer Active Storage
config/storage.yml 

local:
  service: PostgreSQL

Et c’est tout :) Attention quand même à la taille des objets, comme les images par exemple, car la base va vite être alourdie et le temps d’accès n’est pas aussi bon qu’avec de simples fichiers stockés sur disque.