ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE
yellow
Failed to handle exception in exception app middleware : PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1:
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
We are using Discourse behind a reverse proxy, so all users have the same IP, and we would need the GeoIP lookup - I do not see the option to disable the IP lookup altogether, instead of going through the registration process and obtaining a license for something that we are not needed, only in order to eliminate the errors from the logs…
¿No sería razonable ocultar y omitir la búsqueda GeoIP en la configuración de administración del usuario, si no se ha configurado ninguna clave de licencia? ¿O, en su lugar, mostrar información/marcador de posición de que la búsqueda GeoIP sería posible configurando una clave de licencia siguiendo Configure MAXMIND for reverse IP lookups?
Recorrer los registros de errores para monitorear la operación del sistema es una buena práctica, y es molesto dedicar tiempo a investigar errores, solo para descubrir que son esperados porque se intenta una operación que se espera que falle por defecto y que podría omitirse fácilmente verificando una sola configuración .
Puedo intentar abrir una PR en GitHub, si básicamente estás de acuerdo. Pero probablemente estoy pasando algo por alto y no es tan fácil o tiene inconvenientes que no estoy viendo.
No se pudo encontrar MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb): No existe tal archivo o directorio @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No existe tal archivo o directorio @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
Se revirtió de nuevo ya que era demasiado complicado ajustar las pruebas automatizadas para ellas. Se hizo un intento, pero estas volvieron a añadir las advertencias, rompiendo el propósito de mi PR en primer lugar:
Por lo tanto, ambas se revirtieron:
El problema probablemente fue hacer que la lectura de la base de datos dependiera de la existencia de una clave MaxMind. Sin embargo, la base de datos se puede añadir de otras maneras. En nuestra propia instancia, mientras tanto, añadimos bases de datos gratuitas de DB-IP, que no requieren una cuenta. Así que mi propio PR habría roto la forma en que lo hacemos ahora. Lo mismo causó fallos en las pruebas que arreglé en mi PR. Pero en la rama principal y/o en ciertos plugins, esto probablemente causó otros problemas.
Una mejor solución, si alguien quiere abordar esto de nuevo, sería comprobar si los archivos de la base de datos existen, antes de intentar cargarlos, en lugar de si la clave de licencia está definida. Así que aquí:
Solo si File.join(path, "GeoLite2-City.mmdb") existe, cárgalo con mmdb_load.
La salida GUI ajustada también podría haber sido un problema para algunas pruebas, pero debería ser posible añadirla sin romper las pruebas, como un recurso de último caso solo si no hay ubicación disponible y luego el indicador respectivo es verdadero, que se estableció con ret[:no_license] = true. Pero debería renombrarse a no_db o algo similar para indicar que no se trata de si se ha definido una clave de licencia de MaxMind, sino de si los archivos de la base de datos reales existen o no.
¡Gracias por la información! Parece sensato comprobar si existen archivos antes de intentar cargarlos. No soy la persona adecuada para desarrollar una solución, así que intentaré habilitar MaxMind para que mi registro esté más limpio.