Quali sono le tabelle minime obbligatorie in cui è necessario aggiungere righe per creare un utente, in modo che questo risulti visibile e attivo su Discourse?
Non sorprende che non sia apparso nell’interfaccia grafica, ma quali sono i passaggi minimi necessari? Devo aggiungere dati ad altre tabelle o è necessario un riavvio?
Mi aspetto che qualcuno dica che questo non è il modo corretto di procedere, e lo capisco, ma nel mio caso potrebbe essere l’unica strada, come spiegherò di seguito (alcune delle mie ipotesi potrebbero essere errate, ma questa è la mia comprensione):
Tutti gli script di importazione che importano dati da un altro forum basato su database si aspettano di poter connettersi all’altro forum dall’istanza di Discourse. Tuttavia, riuscire ad accedere all’altro forum (jforum) dall’istanza live di Discourse sarà difficile, se non impossibile; allo stesso modo, provare a installare un ambiente di sviluppo di Discourse dove risiede il vecchio forum (su un server molto vecchio) non è possibile.
Non conosco Ruby on Rails, quindi non posso modificare gli script esistenti, ma conosco SQL.
Potrei utilizzare l’API (ho solo 5000 utenti), ma voglio poter usare un plugin/metodo che mantenga l’hash della password MD5, evitando di richiedere a tutti gli utenti di reimpostare le proprie password; quindi penso che non sia possibile farlo tramite l’API.
Esiste uno script di importazione per jforum, quindi posso usarlo per esaminare il SQL necessario per estrarre i dati da jforum senza problemi, per poi inserirli in file CSV da caricare nel database.
Gli importatori bulk potrebbero fornire un modo per aggiungere SQL direttamente a Discourse, ma fatco a vedere il SQL necessario.
Sembra che il punto cruciale sia inserire gli utenti; aggiungere categorie, argomenti e post dovrebbe poi non essere così difficile.
È molto probabile che finirai con un database corrotto. E allora nessuno sarà in grado di aiutarti.
Fai un dump del tuo database e ripristinalo sul tuo server Discourse locale (o ovunque possa connettersi—ho eseguito importazioni più grandi con un database remoto tramite la mia connessione internet domestica) e poi esegui lo script esistente.
Sarà molto più semplice usare Ruby che non capisci piuttosto che capirlo abbastanza bene da capire come scrivere l’SQL. Ho imparato Ruby molto tempo dopo aver scritto il mio primo importatore.
È un po’ condiscendente!
Se lo script di importazione di massa esegue SQL (come credo faccia), documentare l’SQL necessario per creare un utente non è davvero più pericoloso che tentare di utilizzare uno script di importazione di massa. E dato che attualmente ho un’installazione Discourse
Non volevo offendere. Immagino tu abbia saltato il ?
Scommetto che hai ragione!
A volte, i consigli gratuiti di qualcuno che lavora a tempo pieno con Discourse da oltre tre anni, ha eseguito dozzine di importazioni e ha scritto diversi importer da zero valgono quanto si paga per averli.
Grazie, ho alcune domande con cui spero tu possa aiutarmi.
Installazione
Esegui bundle exec rake plugin:install repo=http://github.com/[Communiteq](https://www.communiteq.com) (ex DiscourseHosting)/discourse-migratepassword nella tua directory di Discourse
Riavvia Discourse
L’ho installato, ma come faccio a riavviare Discourse?
Come inserisco il campo personalizzato? Puoi fornirmi la query SQL, oppure è possibile farlo tramite l’API con la parte "user_fields[1]": "string"? Attualmente riesco a creare utenti programmaticamente tramite l’API, ma sto ignorando questo campo.
Se il plugin è installato, il valore della password passato come parte della chiamata API per la creazione dell’utente è irrilevante?
no, prevarrà sul digest MD5 nel campo personalizzato.
Le risposte alle altre due domande si trovano facilmente su questo forum. Se vuoi risparmiare tempo, possiamo eseguire l’importazione e/o l’hosting per te come servizio a pagamento.
Ho cercato entrambe le risposte, ma non sono riuscito a trovarle. Nel primo caso è confuso: alcune installazioni vengono eseguite modificando il file YAML e poi riavviando Docker, mentre altre, come questa, sembrano essere installate all’interno del contenitore Docker. Non è chiaro cosa significhi
Adoro partecipare al processo creativo, innovare e dare il mio contributo. Ma ho anche bisogno di guadagnarmi da vivere, e questo significa che devo tracciare un confine da qualche parte. Cerco di stabilirlo nel punto in cui ho la sensazione di stare lavorando invece di innovare, contribuire e partecipare attivamente.
Per me, cercare la query SQL per un campo personalizzato dell’utente è lavoro, e dato che sei uno sviluppatore esperto, stimo che tu possa risolverla da solo
Beh, certo, posso provare a risolverlo, ma non c’è male chiedere visto che
non è facilmente reperibile su questo forum
Per quanto riguarda l’altra domanda, rimane ancora poco chiara per me.
Non mi aspetto che tu faccia il mio lavoro, d’altro canto trovo generalmente frustrante come la documentazione dia per scontato molto da parte degli utenti.
OK domanda 2, un esempio di aggiunta di un campo personalizzato import_pass per user_id 5 (user_id è visibile nella tabella user_emails o id dalla tabella users)
Ok, l’ho trovato ./launcher restart app
ma non sembra che si stia riavviando. Posso accedere all’app e connettermi al database, ma non riesco a connettermi al sito web. Forse è meglio ricostruirlo e ricominciare.
Quindi ho eseguito ./launcher rebuild app e ora è tornato operativo e funziona.
Pensavo che questo avrebbe ricreato il database, ma non è successo, quindi immagino sia perché il database effettivo persiste al di fuori di Docker e rebuild ricrea solo l’app Docker. Inoltre, vedo che il plugin dataexplorer che ho aggiunto (modificando il file YAML) è ancora lì. Ma il plugin passwordmigration è presente o viene eliminato da rebuild? Nella sezione dei plugin della pagina di amministrazione non c’è assolutamente nulla.
Giusto, ho provato a installare passwordmigration e poi ho eseguito di nuovo il riavvio, e ancora una volta il mio sito è fuori uso. Sembra che passwordmigration stia rompendo qualcosa?
Quindi ho ricreato tutto di nuovo, ho fatto funzionare (ma ora il plugin passwordmigration manca). Se eseguo ./launcher restart app senza installare prima migrationpassword, il riavvio avviene correttamente, quindi sembra esserci un problema specifico con migrationpassword sulla mia configurazione.
L’ultima volta che ho provato, il plugin passwordmigration era incompatibile con l’esecuzione di un’importazione, quindi dovrai installarlo dopo aver completato l’importazione.
Potrebbe essere che stia causando problemi alla tua ricostruzione, ma sarebbe piuttosto sorprendente, dato che Richard lo utilizza nel suo hosting. Ti consiglio di installarlo in app.yml, proprio come hai fatto con data explorer, dopo aver completato l’importazione.
Strano, ho eliminato il database ed eseguito ./discourse-setup, ottenendo così una nuova installazione pulita: tutto funzionava bene.
Ho installato migrationpassword con rake e riavviato, ma il sito si è nuovamente bloccato con errore 502!
Il plugin DataExplorer era ancora presente, quindi l’ho rimosso, ho ricostruito l’ambiente e tutto era ok; poi ho reinstallato migrationpassword e di nuovo errore 502.
È molto confuso, dato che chiaramente funziona per altri utenti ma non sulla mia installazione vanilla.
Proverò a installarlo modificando direttamente il file app.yml.
(Lo shopping natalizio mi ha distratto) ma alla fine ho provato a installare migratepassword modificando app.yml e ricompilando… e ha funzionato!
Tuttavia, l’opzione bundle exec rake plugin:install repo=http://github.com/[Communiteq](https://www.communiteq.com) (ex DiscourseHosting)/discourse-migratepassword non funziona sulla mia installazione vanilla; forse è necessario verificare o rimuovere questa istruzione nel README.md di GitHub - communiteq/discourse-migratepassword: Support migrated password hashes · GitHub