ヘブライ語クライアントロケールでのMF翻訳文字列の問題が致命的なサイトエラーを引き起こす

これはWebUI経由でのアップグレードから約3日前に発生しました。サイトは約2ヶ月前のもので、ユーザーは約500人おり、これまで順調に稼働していました。

再起動、再構築、Redisのフラッシュを試しましたが、白い画面が表示され続けます。

次に何を試すべきでしょうか?プラグインなしで起動しますか?最初からやり直してバックアップから復元しますか?

関連ログ:

rails/production_errors: empty

rails/production:
Started GET "/" for 147.234.130.218 at 2024-07-21 08:38:13 +0000
Processing by ListController#unread as HTML
  Rendered layout layouts/application.html.erb (Duration: 114.3ms | Allocations: 34494)
Completed 500 Internal Server Error in 264ms (ActiveRecord: 0.0ms | Allocations: 88191)

おそらく既にお試し済みかと思いますが、念のため確認させてください。セーフモードでも失敗しますか?

今まで知りませんでした、ありがとうございます。しかし、問題は残っています。
ログアウトすると(技術的にはCookieを消去すると)すべて問題なく表示されますが、ログインすると失敗します。
Railsの経験がなく、より詳細なログを生成させる方法がわかりません。

私にとっては、Rails は…まあ、難しいというよりは…という感じです。

しかし、500 はサーバーのエラーです。何らかのプラグインに起因する可能性が高いですが、設定ミスである可能性もあります。セーフモードは、問題がユーザー側で発生した場合に、何が壊れているかのヒントを与えることができます。しかし、サーバー側で機能変更に関わる何かが壊れている場合、セーフモードは無力です。

もちろん、すべてのプラグインを無効にして再構築し、状況が改善されるかどうかを確認することもできます。その後、どれが原因かを特定し始めることができます。あるいは、少なくとも Discourse 以外のすべてのプラグインを無効にすることもできます。しかし、それでも完全に確実ではありません。なぜなら、すべての公式プラグインがここで使用されているわけではないからです。

しかし、それにはかなりの時間がかかります。おそらく、実際に知っている人が意見を寄せるのを待つ方が賢明な動きでしょう。

/logs を確認すると、追加の詳細が判明することがよくあります。または、ページを読み込もうとしたときにブラウザのコンソールを確認してください。

「いいね!」 1

ブラウザコンソール(Firefox)には何も異常はなく、リクエストで生成されるログは、上記の元のトピックに投稿されたものだけです。

次の手順は何ですか? ./launcher bootstrap を実行し、バックアップから復元しますか?

Jammy は Discourse のログを意味すると思います。管理者の権限でログインできますか?

「いいね!」 1

私は管理者ですが、ログインしても情報が少ないため、内部で問い合わせました…

はい、YourSite/logs ページのことでした。エラーの記録はそこにありませんか?

「いいね!」 1

おやまあ…ロケールの翻訳不足が500エラーの原因になるなんて?!

編集:これはバグレポートになったので、言語ファイル自体に問題があるとは思いません(*.en.ymlファイルをhe.ymlにコピーしても役に立たなかったので)。このような問題は、少なくとも優雅に失敗し、英語にフォールバックすべきだと提案します。

読んだ限りでは、この問題が発生する前の最後の正常なコミットにgitをロールバックする方法はないのでしょうか?もしこれがテストをパスしたのなら、新しいテストを追加する必要があるのでしょう。このコミットは、サイトが「間違った」ロケールを使用している場合には機能しません。サイトを最も速く稼働させるための方法はありますか?また、将来的にこのような事態を避けるにはどうすればよいですか?

ロケールがどこかで欠落しているだけなのか、よくわかりません。そのスクリーンショットによると、MaxMindの設定も間違っています。

私の推測では、他に何か壊れていて、それが他のものも壊しているということです。/.launcher rebuild app を実行して、何かおかしなものが出てこないか探してみることをお勧めします。

プライマリロケールとしてどの言語を使用していますか?

ヘブライ語

そして、何度も再構築しましたが、何も変わりません。

rails console に入り、SiteSetting.default_locale='en' を設定してみてください。

または: User.find_by(username: 'my-username').update(locale: 'en')

「いいね!」 1

ユーザーのデフォルトロケールをオーバーライドするために実行する必要があることはありますか?これだけではあまり変わりませんでした。

ああ、それは良いですね。私の場合、テキストは(右から左に)正しく表示されたままで、UIのみが英語になりました。不格好ですが、使用は可能です。

では、これをすべてのユーザーにループさせて、ヘブライ語が直ったらすべてのユーザーを元に戻すのですか?

それを行う前に、ロケールのエラーを見つけて修正するのに時間をかけることをお勧めします。

まずサイトを稼働させたいです。Crowdinの翻訳が壊れていても、修正する方法がありません。