起動時に AdminDashboardGeneralData.refresh_stats を呼び出しますか?

https://www.pfaffmanager.com/ は、バージョン情報を取得するために /admin/dashboard/general.json から情報を取得しています。UX からこれを取得できるのは非常に便利です。残念ながら、これはサーバーが起動したときではなく、定期的に更新されるため、再構築を行うと、再度実行されるまで(最大30分間)情報が間違ったままになります。私の計画では、新しいコンテナが起動した後に Ansible ツールで AdminDashboardGeneralData.refresh_stats を手動で呼び出すようにしていますが、それは少し馬鹿げているように思えます。

30分ごとに実行するのではなく、起動時にそのタスクを実行するのは理にかなっていますか?再起動せずに更新する方法はありますか?もしなければ、なぜ30分ごとに実行されているのですか?少なくとも、それが起こっていることだと思います。上記の refresh_stats を実行すると general.json が更新されることを確認しました。

「いいね!」 2

一般的に、起動時に何かを実行することは避けたいと考えています。シングルサーバー、非マルチサイト環境では理にかなっているかもしれませんが、規模が大きくなると複雑になります。

例えば、負荷に応じてサーバーを追加/削除するオートスケーリング設定がある場合、それらのスケーリングイベントのたびに複数のサーバーが同時に「起動」する可能性があります。統計情報が更新されている間、すべてのサーバーの起動を遅延させたくはありません。

また、データベース/Redisが読み取り専用状態であっても、サーバーが正常に起動できることを確認したいと考えています。

この特定のpfaffmanagerケースでは、サイトでカスタムプラグインやdiscourse_dockerテンプレートを実行していますか?Discourseの外から、次のようにトリガーできます。

rails runner "About.refresh_stats
「いいね!」 3

ありがとうございます。すべて理解できました。

いいえ!重要な原則の1つは、すべてが標準インストールの場合と同じであるということです。pfaffmanager固有の依存関係は一切ありません。誰かが再構築、プラグインの追加、またはapp.ymlへの環境変数の追加などを行う必要があることに気づいた場合、pfaffmanagerは、SSHを知っていてコマンドを入力できるかのように、まったく同じように実行します。インストールはdiscourse-setupを使用し、アップグレードは./launcher rebuild(または2コンテナセットアップの場合はbootstrap, destroy, start)を実行します。Postgresが古い場合、PostgreSQL 13 updateの手順に従います。オプションのサポートプラグインを作成することを誘惑されたことがいくつかありますが、ほとんどの場合それを避けたいです。すでにAnsible、Rails、Emberを扱っています。さらに別の要素が関わるのは魅力的ではありません。

しかし、そのrunnerビットは非常に役立ちました。新しく構築されたコンテナが再起動された後にこれを実行します。

docker exec web_only bash -c 'rails runner AdminDashboardGeneralData.refresh_stats'

本当にありがとうございます。まさに必要としていたものでした。

「いいね!」 3