[Heroku] [Bot Discord] Upload sur Heroku sans écraser les données dans les .JSON déjà présent chez l’hébergeur

a marqué ce sujet comme résolu.

Bonjour a toutes et tous,

J’ai fini mon bot discord en node.js il y a peut et je me suis rendu compte de quelques dysfonctionnements.

Mon bot a un système d’exp dont les données de chaque utilisateur sont stockées dans un .JSON. Jusque-là rien de problématique, pour pousser le code à Heroku ( mon hébergeur) il faut vider les .JSON ce que j’ai fait, lors de mon 1er test, tout fonctionne.

Le problème vient du fait que a chaque fois que je veux apporter une modification à mon code puis le poussé chez l’hébergeur mes .JSON se remettent a zéro, donc toute la progression des utilisateurs de mon serveur discord est perdue encore et encore :(

Je cherche un moyen de mettre à jour mon code sans écraser mes fichiers .JSON qui sont à jour sur les serveurs de Heroku. J’ai essayé de récupérer les données avec un clone de mon bot (heroku git:clone) mais si je renvoie des fichiers .JSON remplis, Heroku ne l’est modifie plus comme si c’étaient des images à un instant T. Ajouter mon fichier exp.JSON dans .gitignore ne fonctionne pas non plus vu que heroku me supprime purement et simplement les fichiers qu’il possède.

Y a-t-il un moyen de mettre à jour mon bot sur Heroku en lui demandant de ne pas mettre à jour une partie du dossier de mon bot?

Merci pour vos réponses.

Salut,

Il faut que tu utilises une base de données quelconque — relationnelle ou non — ou alors une sorte de système de fichier annexe et externe à heroku pour gérer tes fichiers JSON.

Ceux-ci ne doivent pas interférer avec le code de ton dépôt.

Salut GeO,

Merci pour ta réponse, mais comment je peux dire à Heroku que ces fichiers ne sont pas sur son serveur et qu’il doit aller les chercher autre part ? As-tu des noms de serveurs que je pourrais utiliser gratuitement comme BdD ? J’ai vu qu’il été possible de connecter un bot à une feuille Google sheet afin qu’il récupère les informations qui s’y trouvent, mais je n’ai pas vu qu’il pouvait y écrire, as-tu des infos là-dessus ?

Ça fait beaucoup de question et j’en ai d’autre, mais je vais me contenter de l’essentiel :)

Merci pour vos futures réponses.

Apparemment c’est possible d’utiliser un système de stockage tiers sur heroku (j’avais jamais eu le besoin, j’ai jamais déployé de truc persistent là-bas) :

https://devcenter.heroku.com/articles/active-storage-on-heroku

EDIT : la doc que j’ai donnée est dans le cadre d’une appli Rails avec ActiveRecord visiblement, mais j’imagine que le fait d’aller stocker ton JSON dans des buckets S3 par exemple (l’exemple de conf qui est donné dans la doc) s’étend à d’autres technos.

+0 -0

Bonjour, Merci pour ta réponse Javier, j’ai trouvé les dataclips avec postgres. Tu pense que je peux me servir d’un dataclip comme d’un json pour stocker mes données?

ticonfire

Les dataclips ne sont pas du tout adaptés à ce que tu veux faire, ils sont utiles pour partager des aggrégations ou visualisations de données à partir d’une base de données relationnelle (PostgreSQL en l’occurrence).

Heroku ne garantit pas la persistance des systèmes de fichiers dans tes dynos, ce qui fait que tu dois les stocker ailleurs si tu le souhaites (S3, GCS, Azure Storage, B2, etc.). Mais honnêtement c’est pas vraiment approprié non plus ici.

Ce que tu devrais faire, c’est stocker tes informations dans une base de données, plutôt que dans un fichier. Si tu tiens absolument à conserver la liberté d’écriture du format JSON, alors tu peux utiliser MongoDB par exemple1. Si tu veux « faire les choses bien », je te conseille vivement de t’intéresser aux bases de données relationnelles2.


  1. Disponible en add-on sur Heroku https://elements.heroku.com/addons/mongolab

  2. Petite introduction interactive au sujet https://sqlbolt.com

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte