ここに欠落しているAPIがあるのではないかと疑っています。
Data Explorerは、プラグインのワークフローの一部としてますます便利になっていますが、
Data Explorerが最終的にインストールされた場合に、ビルドを危険にさらすことなく、また毎回再試行できるように、サードパーティのプラグインからData Explorerのクエリを確実に追加するにはどうすればよいでしょうか。
検討したオプション:
- ポーリングプラグイン:これはごまかしです。クエリはData Explorerプラグイン自体によって追加されます。
- プラグインフィクスチャ:Data Explorerのアーティファクトは、プラグインの初期化中に利用可能であることが保証されていないように見えるため、問題があるようです。おそらく、Data Explorerプラグイン自体がサードパーティのプラグインであり、ロードされていることが保証されていないためでしょうか?Rubyコードを介してSQLを使用して、テーブルが存在するかどうかを識別することを試みるかもしれません。
- マイグレーション:マイグレーションを作成しましたが、Data Explorerプラグインがインストールされておらず、クエリテーブルがない場合は、無害に失敗する必要がありますが、完了してはいけません。マイグレーションは、Data Explorerプラグインがインストールされ、テーブルが使用可能になり、クエリを追加できるようになるまで、再構築時に常に実行される必要があります。そうすれば、管理者側から見ると、ソリューションは柔軟で、インストール順序に依存しません。失敗するマイグレーションはビルドを危険にさらすべきではありません。ビルドを停止せずにマイグレーションを失敗/延期する方法はありますか?
- 定期的なスケジュールされたジョブを使用して、データエクスプローラプラグイン/クエリテーブルと必要なクエリの両方の存在を確認します。
- 管理者に手動で追加してもらう… うえっ。
次にSQLバージョンの2を試すか、何か見落としているのかもしれません。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
サブスクリプションプラグインに依存するコードを見てみます。
なぜデータエクスプローラーが必要なのですか?エンドユーザーが使用するクエリを作成することが目的ですか?
はい、まさにその通りです。データエクスプローラーは、プロセスにおいて権限のあるユーザーが管理タスクに使用できる段階に達しつつあります。
「いいね!」 1
pfaffman
(Jay Pfaffman)
4
インストールされているかどうかを確認するジョブを実行できます。すべてが実行されるまで開始されません。
ただし、何かが壊れていないことを確認するために、データエクスプローラーの呼び出しが利用可能かどうかを確認できます。たぶん、私はサブスクリプションでそれをやっていると思います。(まだ朝早いので、ラップトップを開いていません。)
彼らは先週、チャットプラグインがロードされているかどうかを確認するコードを追加しました。
あなたの問題は競合状態だと思います。
「いいね!」 1
はい、そのオプションは利用可能なオプションのリストにありませんでしたので、追加します。
しかし、ジョブを実行し続ける(そして定期的にチェックする)のは、少し無駄な気がします。
良い提案ではありますが(そして、私も検討しましたが、少し…という感じがしました)。
pfaffman
(Jay Pfaffman)
6
起動時に一度だけ実行するようにキューに入れるのはどうでしょうか?そして、プラグインのテストが成功するか、数分後に停止するまで実行されるようにするのはどうでしょうか?
「いいね!」 1
初期化時のエンキューのアイデアは良いですね。それは潜在的に読み込みの問題を克服します。私はそれを24時間に一度のオプションよりも好みます。試してみるかもしれません!ありがとうございます!
ちなみに、これに対する答えは、より広範な問題にも一般的に役立つでしょう。
pfaffman
(Jay Pfaffman)
9
必要なのは、テストが失敗した場合にレスキューされる場所にテストを配置することだけだと思います。しかし、DataExplorer.something のようなものが存在するかどうかをテストするだけではダメでしょうか?
私はマイグレーションの使用について十分に知らないため、あなたのユースケースにそれを使用することを検討したことがありません。管理パネルが呼び出すエンドポイントを用意して、クエリがインストールされているかどうかを確認することもできます。
今考えてみると、実際に解決した唯一の問題は、テストが機能するように他のプラグインを追加したことだけではないかと思います。