Nous exécutons plusieurs forums Discourse en tant qu’instances isolées sur la même machine virtuelle. Chaque forum a sa propre base de données Postgres distincte, mais ils sont tous gérés par un script partagé qui s’exécute sur la machine hôte.
Nous cherchons à automatiser la création des utilisateurs initiaux lors de la configuration. Plutôt que d’utiliser l’API ou l’importateur CSV, nous nous demandons :
Est-il possible (et sûr) d’insérer directement des enregistrements d’utilisateurs dans la base de données de chaque instance ?
Étant donné que notre script interagit déjà avec les bases de données, cela pourrait considérablement simplifier le processus d’approvisionnement.
Quelqu’un a-t-il déjà tenté la création directe d’utilisateurs en base de données ? Ou est-ce une mauvaise idée en raison des risques liés à l’intégrité des données, aux sessions ou à d’autres mécanismes spécifiques à Discourse ?
Nous apprécierions tout conseil ou expérience que vous pourriez partager !
Il est un peu plus sûr de laisser Rails s’en charger que de modifier la base de données vous-même, mais vous pouvez le faire si vous le souhaitez. Notez que vous devez toucher au moins les tables user et user_emails, et vous assurer que les user_ids correspondent.
Merci, @pfaffman — j’apprécie vraiment vos conseils !
Pour clarifier : l’une des principales raisons pour lesquelles nous explorons cette voie est que les méthodes basées sur CSV et API sont trop lentes pour ce que nous essayons de faire. Nous lançons de nombreuses instances isolées et devons y charger rapidement un lot d’utilisateurs pendant le provisionnement.
L’approche par fixtures/plugin que vous avez mentionnée permettrait-elle une création d’utilisateurs significativement plus rapide par rapport aux méthodes API ou CSV ? Plus précisément, nous espérons réduire le temps d’attente pendant la configuration — idéalement quelque chose qui s’exécute instantanément ou quasi instantanément en parallèle avec la configuration initiale de la base de données.
Vous pouvez consulter les scripts d’importation en masse pour des exemples de mise à jour directe de la base de données. Le script d’importation a une certaine surcharge, donc peut-être que l’exemple dans les fixtures sera plus rapide ?
Combien d’utilisateurs ajoutez-vous ? Avez-vous les mêmes utilisateurs pour chaque site ?