O Data Explorer tem se tornado cada vez mais útil como parte de um fluxo de trabalho de Plugin, mas:
Como adicionamos de forma confiável, mas tolerante, consultas do Data Explorer de um plugin de terceiros para que possamos falhar graciosamente sem comprometer a compilação, mas também tentar novamente a cada vez, caso o Data Explorer seja eventualmente instalado?
Opções que explorei:
Poll Plugin: isso é uma fraude - as consultas são adicionadas pelo próprio plugin Data Explorer
Plugin fixtures: isso parece problemático porque os artefatos do Data Explorer não parecem ser garantidos como disponíveis durante a inicialização do plugin - talvez porque o próprio plugin Data Explorer seja um plugin de terceiros e não haja garantia de que tenha sido carregado? Acho que posso tentar usar SQL via código Ruby para identificar se a tabela existe?
Migrações: escrevi migrações, mas elas precisam falhar inofensivamente, MAS NÃO COMPLETAR se o plugin Data Explorer não estiver instalado e não houver tabela de consulta - as migrações devem sempre ser executadas na reconstrução até que o plugin Data Explorer seja instalado e a tabela esteja disponível para que as consultas possam ser adicionadas - dessa forma, do ponto de vista do administrador, a solução é flexível e não depende da ordem de instalação. Uma migração com falha não deve comprometer a compilação - existe uma maneira de falhar/adiar uma migração sem interromper a compilação?
Usar um trabalho agendado periódico para verificar a presença do plugin Data Explorer/tabela de consulta e as consultas necessárias.
Pedir ao administrador para adicioná-los manualmente… yuk.
Acho que tentarei a versão SQL do item 2 a seguir, ou talvez esteja perdendo alguma coisa?
Sim, exatamente isso. O Data Explorer está chegando a um ponto em que você pode usá-lo para tarefas administrativas para aqueles com funções elevadas em um processo.
Você poderia ter um trabalho que é executado para verificar se eles estão instalados. Ele não começaria até que tudo estivesse funcionando.
Mas para garantir que nada esteja quebrado, você pode verificar se alguma chamada do explorador de dados está disponível. Acho que é o que estou fazendo para assinaturas, talvez. (É cedo e ainda não abri meu laptop.)
Eles adicionaram código na semana passada que verifica se o plugin de bate-papo está carregado.
Eu acho que seu problema é uma condição de corrida, no entanto.
Talvez você possa apenas enfileirar para executar uma vez na inicialização? E ele seria executado até que o teste do plugin fosse bem-sucedido ou morresse após alguns minutos?
Gosto da ideia de enfileirar na inicialização. Isso potencialmente supera o problema de carregamento. Prefiro isso à opção de uma vez a cada 24 horas. Talvez tente isso! Obrigado!
Acho que apenas colocar seu teste em algum lugar que seja recuperado se falhar é tudo que você precisa. Mas você não pode apenas testar para ver se algo como DataExplorer.algo existe?
Eu não sei o suficiente sobre o uso de migrações para ter considerado usá-las para o seu caso de uso. Você também pode ter um endpoint que, digamos, o painel de administração chama, e ele verificaria se você tem suas queries instaladas.
Agora que estou pensando, receio que o único problema que realmente resolvi é adicionar o outro plugin para que os testes possam funcionar.