ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE
amarillo
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
Estamos usando Discourse detrás de un proxy inverso, por lo que todos los usuarios tienen la misma IP, y necesitaríamos la consulta de GeoIP. No veo la opción para desactivar por completo la consulta de IP; en lugar de pasar por el proceso de registro y obtener una licencia para algo que no necesitamos, solo para eliminar los errores de los registros…
¿Me estoy perdiendo alguna configuración para desactivar esto?
¿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.