ActiveRecord::StatementInvalid (PG::UndefinedTable: ERRORE: la relazione "groups" non esiste LINEA 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE
giallo
Impossibile gestire l'eccezione nel middleware dell'app di eccezione: PG::UndefinedTable: ERRORE: la relazione "groups" non esiste LINEA 1:
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) non è stato trovato: Nessun file o directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) non è stato trovato: Nessun file o directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Stiamo utilizzando Discourse dietro un reverse proxy, quindi tutti gli utenti hanno lo stesso indirizzo IP e avremmo bisogno della ricerca GeoIP. Non vedo l’opzione per disabilitare completamente la ricerca dell’IP, invece di dover passare attraverso il processo di registrazione e ottenere una licenza per qualcosa di cui non abbiamo bisogno, solo per eliminare gli errori dai log…
Manca una impostazione per disabilitare questa funzionalità?
Non sarebbe ragionevole nascondere e saltare la ricerca GeoIP dalle impostazioni di amministrazione dell’utente, se non fosse stata configurata alcuna chiave di licenza? O invece mostrare un’informazione/segnaposto che la ricerca GeoIP sarebbe possibile impostando una chiave di licenza seguendo Configure MAXMIND for reverse IP lookups?
Scorrere i log degli errori per monitorare il funzionamento del sistema è una buona pratica, ed è fastidioso dedicare tempo a indagare sugli errori, solo per scoprire che sono previsti perché si tenta un’operazione che ci si aspetta fallisca per impostazione predefinita e che potrebbe essere facilmente saltata controllando una singola impostazione .
Posso provare ad aprire una PR su GitHub, se fondamentalmente siete d’accordo. Ma probabilmente sto trascurando qualcosa e non è così facile o ha degli svantaggi che non vedo.
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) non è stato trovato: Nessun file o directory di questo tipo @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) non è stato trovato: Nessun file o directory di questo tipo @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
È stato nuovamente annullato poiché era troppo complicato adattare i test automatici per essi. È stato fatto un tentativo, ma questi hanno riaggiunto gli avvisi, vanificando lo scopo del mio PR in primo luogo:
Quindi entrambi annullati:
Il problema più probabile è stato rendere la lettura del database dipendente dall’esistenza di una chiave MaxMind. Il database, tuttavia, può essere aggiunto in altri modi. Nella nostra istanza, nel frattempo aggiungiamo database gratuiti DB-IP, che non richiedono un account. Quindi il mio PR avrebbe interrotto il modo in cui lo facciamo ora. La stessa cosa ha causato il fallimento dei test che ho corretto nel mio PR. Ma sul branch principale e/o in alcuni plugin ciò ha probabilmente causato altri problemi.
Una soluzione migliore, se qualcuno vuole riprovare, sarebbe controllare se i file del database esistono, prima di tentare di caricarli, invece di verificare se la chiave di licenza è definita. Quindi qui:
Solo se File.join(path, "GeoLite2-City.mmdb") esiste, caricalo con mmdb_load.
Anche l’output GUI modificato potrebbe essere stato un problema per alcuni test, ma dovrebbe essere possibile aggiungerlo senza rompere i test, come fallback solo se non è disponibile alcuna posizione e quindi il rispettivo flag è vero, che è stato impostato con ret[:no_license] = true. Ma dovrebbe essere rinominato in no_db o qualcosa di simile per indicare che non si tratta di sapere se è stata definita una chiave di licenza MaxMind, ma se i file effettivi del database esistono o meno.
Grazie per le informazioni! Sembra sensato controllare i file prima di tentare di caricarli. Non sono la persona adatta a sviluppare una soluzione, quindi proverò ad abilitare MaxMind per ridurre il disordine nel mio log.