A quoi sert init.js?


#1

Bonjour,

Je me suis lancé dans le dev d’un système d’automatisation pour faciliter le déploiement de Gladys, que ce soit en bare-metal ou en container docker. Du coup, je me suis demandé à quoi sert init.js, et pourquoi il faut l’exécuter avant app.js. D’après ce que j’ai vu, c’est pour initialiser les tables, mais étant un gros débutant en Node.js, je ne vois pas où cela est pris en charge. Serait-il possible de le fusionner avec app.js/dev.js ?


#2

Oui c’est ça, ça sert à initialiser la db (init) , c’est sails qui s’en charge grâce aux models .

Pourquoi fusionner ? Cette opération n’est utile qu’une fois


#3

Parce-que notre ami Docker a du mal à lancer plusieurs commandes à la fois. S’il était possible de ne lancer qu’un seul commande, ça aiderait pas mal à créer une image docker facile à déployer.

Dans le cas d’une modification en base de donnée (ajout d’une table, modification des colonnes, etc.), faut-il exécuter init.js de nouveau pour que Sails mettre les tables d’équerre ?


#4

je crois que tu te complique la vie :

Non pas utile, c’est géré par Gladys directement si la base de à besoin d’un upgrade


#5

Oui, j’ai effectivement vu la procédure d’installation, j’ai pu installer un instance sur un VPS avec celui-ci (même si ça fait une bonne anne qu’il ne tourne plus :sweat_smile:).
Cependant, tout les systèmes d’automatisation autour de Docker ne gèrent pas très bien les container d’initialisation tels qu’utilisés par Gladys. Ceux-ci sont des hack très peu utilisés (tout du moins de mon expérience), je n’ai vu cela que chez Gladys et certains charts Helm extrêmement complexes.

En bref, quitte à faire une test simple pour vérifier l’initialisation de la DB au lancement de Gladys, je pense qu’il faudrait mieux mettre ça dans app.js plutôt que de séparer dans deux scripts différents.


#6

Hello @Dremor!

Je suis d’accord avec toi, c’est actuellement une limitation du framework qu’on utilise malheureusement.

Néanmoins on va changer de framework dans la prochaine version majeure de Gladys, Gladys 4, et là pour le coup cette partie fonctionnera plus simplement, plus de init.js, qu’une app à lancer, ça sera plus simple :slight_smile:


#7

@pierre-gilles Merci pour cette précision. J’attend avec impatience le cette v4, j’essayerais d’y participer si j’ai le temps (mais étant un programmeur C#, je n’ai que peu de connaissance dans les techno node.js).