Stiamo gestendo più forum Discourse come istanze isolate sulla stessa macchina virtuale. Ogni forum ha il proprio database Postgres separato, ma sono tutti gestiti da uno script condiviso che viene eseguito sulla macchina host.
Stiamo cercando di automatizzare la creazione degli utenti iniziali durante l’installazione. Invece di utilizzare l’API o l’importatore CSV, ci chiediamo:
È possibile (e sicuro) inserire i record utente direttamente nel database di ciascuna istanza?
Poiché il nostro script interagisce già con i database, questo potrebbe semplificare notevolmente il processo di provisioning.
Qualcuno ha già tentato la creazione diretta di utenti tramite database? O è una cattiva idea a causa dei rischi con l’integrità dei dati, le sessioni o altri meccanismi specifici di Discourse?
Apprezziamo qualsiasi consiglio o esperienza che possiate condividere!
È un po’ più sicuro far fare a Rails piuttosto che modificare il database da soli, ma puoi farlo se vuoi. Tieni presente che devi toccare almeno le tabelle user e user_emails e assicurarti che gli user_id corrispondano.
Giusto per chiarire: uno dei motivi principali per cui stiamo esplorando questa strada è che sia il metodo CSV che quello basato su API sono troppo lenti per quello che stiamo cercando di fare. Stiamo avviando molte istanze isolate e dobbiamo popolare ciascuna con un batch di utenti rapidamente durante il provisioning.
L’approccio con fixture/plugin che hai menzionato consentirebbe una creazione di utenti significativamente più veloce rispetto ai metodi API o CSV? Nello specifico, speriamo di ridurre i tempi di attesa durante l’impostazione — idealmente qualcosa che venga eseguito istantaneamente o quasi istantaneamente insieme all’impostazione iniziale del DB.
Puoi consultare gli script di importazione bulk per esempi di aggiornamento diretto del database. Lo script di importazione ha un certo overhead, quindi forse l’esempio nei fixture potrebbe essere più veloce?
Quanti utenti stai aggiungendo? Hai gli stessi utenti per ogni sito?