Как автоматически добавлять запросы из Data Explorer из плагина?

У меня есть подозрение, что здесь отсутствует какой-то API.

Data Explorer становится всё более полезным в рамках рабочего процесса плагина, однако:

Как надёжно, но с учётом возможных сбоев, добавлять запросы Data Explorer из стороннего плагина, чтобы корректно обрабатывать ошибки, не ставя под угрозу сборку, и при этом повторять попытку каждый раз на случай, если Data Explorer будет установлен в будущем?

Рассмотренные мной варианты:

  1. Опрос плагина: это обходной путь — запросы добавляются самим плагином Data Explorer.
  2. Фикстуры плагинов: это, похоже, проблематично, поскольку артефакты Data Explorer, кажется, не гарантированно доступны во время инициализации плагина — возможно, потому что сам Data Explorer является сторонним плагином и не гарантируется, что он уже загружен? Возможно, я мог бы попробовать использовать SQL через код на Ruby, чтобы определить, существует ли таблица?
  3. Миграции: я написал миграции, но они должны безвредно завершаться с ошибкой, но не останавливаться полностью, если плагин Data Explorer не установлен и таблица запросов отсутствует. Миграции должны запускаться при каждой пересборке до тех пор, пока не будет установлен плагин Data Explorer и не станет доступна таблица, чтобы можно было добавить запросы. Таким образом, с точки зрения администратора решение остаётся гибким и не зависит от порядка установки. Сбой миграции не должен ставить под угрозу сборку — существует ли способ завершить миграцию с ошибкой или отложить её, не останавливая сборку?
  4. Использование периодического запланированного задания для проверки наличия как плагина Data Explorer, так и таблицы запросов, а также необходимых запросов.
  5. Попросить администратора добавить их вручную… Фу.

Думаю, следующим шагом я попробую вариант 2 с использованием SQL или, возможно, я что-то упускаю?

Я посмотрю свой код, который зависит от плагина подписки.

Зачем вам Data Explorer? Речь идет о создании запросов, которые будут использовать конечные пользователи?

Да, именно так. Data Explorer уже подходит к тому моменту, когда его можно использовать для административных задач теми, кто имеет повышенные права в процессе.

Можно настроить задачу, которая проверяет их установку. Она не начнёт выполняться, пока всё не запустится.

Но чтобы убедиться, что ничего не сломано, можно проверить, доступен ли какой-то вызов обозревателя данных. Кажется, я делаю именно так для подписок, возможно. (Утро, я ещё не открыл ноутбук.)

На прошлой неделе добавили код, который проверяет, загружен ли плагин чата.

Думаю, ваша проблема — это состояние гонки.

Да, этого варианта нет в списке доступных, я добавлю его.

Но запуск задачи (которая будет периодически выполняться и проверять), кажется, немного расточителен?

Хорошее предложение, правда (я об этом думал, но это показалось мне немного…)

Может, просто поставить его в очередь на однократный запуск при старте? Тогда он будет работать, пока тест плагина не пройдет успешно, или завершится через несколько минут?

Мне нравится идея с добавлением в очередь при инициализации. Это потенциально решает проблему загрузки. Я предпочитаю это варианту «раз в 24 часа». Попробую! Спасибо!

Кстати, ответ на этот вопрос также был бы полезен в целом для более широкого круга задач.

Я думаю, достаточно просто разместить ваш тест в месте, где он будет перехвачен при сбое. Но разве нельзя просто проверить, существует ли что-то вроде DataExplorer.something?

Я недостаточно хорошо разбираюсь в миграциях, чтобы подумать об их использовании для вашего случая. Также можно создать endpoint, который, скажем, вызывался бы из админ-панели и проверял, установлены ли у вас нужные запросы.

Теперь, когда я об этом думаю, боюсь, что единственная проблема, которую я на самом деле решил, — это добавление другого плагина, чтобы тесты могли работать.