¿Cómo añadir consultas del Data Explorer desde un plugin?

Sospecho que falta una API aquí.

Data Explorer se ha vuelto cada vez más útil como parte de un flujo de trabajo de complementos, pero:

¿Cómo agregamos de manera confiable pero tolerante las consultas de Data Explorer desde un complemento de terceros para poder fallar con gracia sin poner en peligro la compilación, pero también reintentar cada vez en caso de que Data Explorer se instale eventualmente?

Opciones que he explorado:

  1. Encuestar al complemento: esto hace trampa: las consultas son agregadas por el propio complemento Data Explorer.
  2. Fijaciones de complementos: esto parece ser problemático porque los artefactos de Data Explorer no parecen estar garantizados para estar disponibles durante la inicialización del complemento, ¿quizás porque el propio complemento Data Explorer es un complemento de terceros y no se garantiza que se haya cargado? Supongo que podría intentar usar SQL a través de código Ruby para identificar si la tabla existe.
  3. Migraciones: he escrito migraciones, pero deben fallar inofensivamente PERO NO COMPLETARSE si el complemento Data Explorer no está instalado y no hay una tabla de consulta. Las migraciones siempre deben ejecutarse en la reconstrucción hasta que el complemento Data Explorer esté instalado y la tabla esté disponible para que se puedan agregar las consultas. De esa manera, desde el punto de vista del administrador, la solución es flexible y no depende del orden de instalación. Una migración fallida no debería poner en peligro la compilación, ¿hay alguna forma de fallar/posponer una migración sin detener la compilación?
  4. Usar un trabajo programado periódico para verificar la presencia tanto del complemento Data Explorer/tabla de consulta como de las consultas requeridas.
  5. Pedirle al administrador que los agregue manualmente… puaj.

Supongo que intentaré la versión SQL de 2 a continuación o tal vez me estoy perdiendo algo.

1 me gusta

Echaré un vistazo a mi código que depende del plugin de suscripción.

¿Por qué necesitas el explorador de datos? ¿El objetivo es crear consultas que un usuario final utilizará?

Sí, exactamente eso. Data Explorer está llegando a un punto en el que puedes usarlo para tareas administrativas para aquellos con roles elevados en un proceso.

1 me gusta

Podrías tener un trabajo que se ejecute para comprobar que están instalados. No comenzaría hasta que todo esté funcionando.

Pero para asegurarte de que las cosas no estén rotas, puedes comprobar que alguna llamada al explorador de datos esté disponible. Creo que eso es lo que estoy haciendo para las suscripciones, tal vez. (Es temprano y no he abierto mi laptop).

Agregaron código la semana pasada que verifica si el plugin de chat está cargado.

Creo que tu problema es una condición de carrera, sin embargo.

1 me gusta

Sí, esa opción falta en la lista de opciones disponibles, la agregaré.

Pero, ¿tener un trabajo en ejecución (que continuará ejecutándose periódicamente y verificando) parece un poco derrochador?

Aunque es una buena sugerencia (y lo he considerado, pero se sintió un poco …)

¿Tal vez simplemente lo pones en cola para que se ejecute una vez al inicio? ¿Y se ejecutaría hasta que la prueba para el plugin tuviera éxito o moriría después de algunos minutos?

1 me gusta

Me gusta la idea de poner en cola en la inicialización. Eso potencialmente supera el problema de la carga. Prefiero eso a la opción de una vez cada 24 horas. ¡Podría intentarlo! ¡Gracias!

[cita=“merefield, post:1, tema:368511”]

  • ¿hay alguna manera de fallar/posponer una migración sin detener la compilación?
    [/cita]

Por cierto, la respuesta a esto también sería generalmente útil para un conjunto más amplio de problemas.

Creo que simplemente poner tu prueba en algún lugar donde se rescate si falla es todo lo que necesitas. Pero, ¿no puedes simplemente probar para ver si existe algo como DataExplorer.algo?

No sé lo suficiente sobre el uso de migraciones como para haber considerado usarlas para tu caso de uso. También podrías tener un endpoint que, digamos, el panel de administración llamara, y que comprobara que tienes tus consultas instaladas.

Ahora que lo estoy pensando, me temo que el único problema que realmente resolví es agregar el otro plugin para que las pruebas puedan funcionar.