今日フォーラムでこれを見ました
そして、Discourseは正しいと思います。dashboard.problem.sidekiq_check は存在せず、代わりに次のものがあります。
これらは、こちらで参照されています。
しかし、Discourseはその問題チェックの名前を参照しているようです。
今日フォーラムでこれを見ました
そして、Discourseは正しいと思います。dashboard.problem.sidekiq_check は存在せず、代わりに次のものがあります。
これらは、こちらで参照されています。
しかし、Discourseはその問題チェックの名前を参照しているようです。
以下の修正で解決しました:
修正の仕組みについて解説していただけますか?server.en.ymlに翻訳キーがあり、override_keyがチェックの名前に合わせてリネームされているのが見えます。なぜ両方ともファイル名に合わせる必要があったのでしょうか?sidekiq_checkの代わりにsidekiqでも動作したはずです。表示される警告に影響を与えるのが、まだチェックの名前でoverride_keyではないのか疑問に思っています。つまり、dashboard.problem.queue_sizeというオーバーライドは機能するのか、それともdashboard.problem.sidekiqと同様に、決して表示されないテキストなのか気になります。
はい、別ファイルで問題チェック識別子に言及しています:
したがって、上記の PR は、翻訳内の文字列が問題チェックのファイル名(つまり sidekiq_check という識別子に変換されるもの)と一致するようにしています。翻訳文字列に sidekiq を使用しても機能せず、識別子と一致しませんでした。
すみません、まだよく理解できません。
queue_size も、sidekiq がそうだったのと同様に、ファイル名/識別子と一致していません。そして、その場合に問題にならない理由がまだわかりません。
これは、オーバーライドキーのいずれかではなく、識別子を直接使用する別のコードパスがあるからでしょうか? つまり、ファイル名に一致する3番目の翻訳キーを追加する代わりに、sidekiq を識別子ベースのキーを使用するように変更したのでしょうか? オーバーライドケースと識別子ケースの両方をサポートする、いわば一石二鳥の解決策のような?
もしそうなら、なぜ dashboard.problem.sidekiq_check をオーバーライドキーとして渡す必要があるのか理解できません。他の問題チェックでは、翻訳キーがファイル名と一致しているため、そのようなオーバーライドは必要ありません。では、なぜここでオーバーライドが必要なのでしょうか?
はい、その通りです。
必要ありません。sidekiq_check.rbの8行目でreturn problemを実行すれば、おそらく問題なく動作します。これらは同等です。(当時のPRで変更範囲を小さくするため、オーバーライドへの参照を残しておきました。)
開発環境のインストールで簡単に変更して、dashboard.problem.queue_size エラーメッセージをトリガーできるものはありますか?
def massive_queue?
Jobs.queued >= 100_000
end
を >= 0 に変更すれば、そのエラーがトリガーされるだろうと思っていましたが、結果として dashboard.problem.sidekiq_check が発生しました。
システム仕様の再現は容易です。私はそれを試みましたが、さらにいくつかの問題が露見しました。これらは以下の修正で解決されるはずです:
Discourse のインターフェースを翻訳する際、文脈の中でテキストを確認できることが役立つことがあります。そのため、私はこのような警告を意図的に発生させようとすることがあり、より簡単にそれを行う方法を知りたいと考えています。システムスペックでそれは可能でしょうか? それとも、あなたの言う「より簡単」というのは、コードが期待通りに動作することを確認する文脈に関連するだけでしょうか?
はい、システムスペックを使用してコンテキスト内の翻訳を表示できます。
Discourse の開発環境をお持ちの場合、以下のような操作を行うことができます。
pause_test ステートメントを追加します。例えば、上記のスペックの場合、admin_notices_spec.rb の 47 行目に pause_test を追加し、以下のようにスペックを実行しました。
PLAYWRIGHT_HEADLESS=0 bin/rspec spec/system/admin_notices_spec.rb:47
これにより、ブラウザが起動し、特定の画面で一時停止しました。