neounix
(Dark Matter)
1
Discourse 管理プラグインをご紹介できることを嬉しく思います。このプラグインは、メインアプリの yml ファイルで指定されたコンテナ名を、管理ページのバックアップタブに追加します。このユーティリティプラグインは、マルチコンテナ構成を実行し、一目でどのコンテナが実行中かを確認したい Discourse システム管理者に役立ちます。
スクリーンショット
これはシンプルなプラグインであり、私が初めて公開するプラグインでもあります。改善のためのコメントや PR を大歓迎します。コンテナ情報は、yml ファイルの環境変数から取得されます。例えば:
- DISCOURSE_CONTAINER_MAIN
- DISCOURSE_CONTAINER_DATA
私たちは複数のコンテナを同時に稼働させ、リバースプロキシ設定を変更することで、ダウンタイムゼロで Discourse コンテナを再構築し、切り替えることができます。そのため、docker ps から取得するのではなく、この値を yml ファイルにハードコードする方が、リバースプロキシの設定によってどのコンテナが有効化されているかを docker ps が判断できないという問題を防ぐため、私たちの場合には適切でした。
TODO
私の Ember のスキルは Discourse の専門家と比較して未熟です(まだ Ember を学習中ですので)。そのため、2 つの領域で問題が発生し、少なくとも 2 つの TODO が残っています。興味のある方は PR を歓迎します:
-
Discourse アプリ(GUI)が実行中で、コンテナを切り替えた場合(リバースプロキシ設定の変更経由)、ページを再読み込みするか、プラグインを無効化して再度有効化する必要があります。計算プロパティが自動的に更新されるようにできませんでした(多くの異なる手法を試しましたが)。
-
I18N が期待通りに動作しなかったため、<span> 要素は JS コードにハードコードされており、ロケール設定に配置されていません(ただし、ドラフトのプレースホルダーは用意されています)。
前述の通り、私はまだ Discourse プラグインの初心者ですので、PR を大歓迎します。
コメントとアップデートもこちらで歓迎します:
PR を歓迎します!
「いいね!」 8
このプラグインは本当に役立ちそうです。
ありがとうございます!
「いいね!」 3
リバースプロキシを介してコンテナが切り替えられた際、計算プロパティを使用して Ember をどのようにリアクティブにするかについては、私にはわかりません。確かに興味深いトピックですね。頑張ってください。
試しにやってみました。リバースプロキシ設定を変更してコンテナを切り替えたところ、プラグインをオフにしてオンにすることで更新されました。
とにかく…このユーティリティプラグインを提供してくださり、@neounix さん、ありがとうございます。
今後の改善を楽しみにしています。
「いいね!」 2
neounix
(Dark Matter)
4
ありがとうございます。しかし実際には、このユーティリティはDiscourseのシステム管理者全体の1%未満にしか役立たないでしょう。なぜなら、ほとんどのDiscourseインスタンス(メタでの投稿からの大胆な推測ですが)は、リバースプロキシなしで単一のコンテナを実行しているからです(標準的なDiscourseがサポートする設定)。
はい、私はさまざまな方法を試しました。私の「極端な初心者レベル」に基づくと、Discourseプラグインにおいて、ymlからRubyでGlobalSetting環境変数しか読めず、プラグインの残りはJavaScriptで書かれていることが問題でした。
また、プラグインを100% Rubyに書き換えることも検討しましたが、まだその方向には進んでいません。なぜなら、誰かがより良いアイデアを持っているか、あるいはリバースプロキシの切り替えケースでコンテナ情報をリアクティブにする方法をPRしてくれることを期待しているからです。そうすれば、アプリの再読み込み(プラグインの再初期化)は不要になります。
コメントいただきありがとうございます。
「いいね!」 2