ダイジェストメールのプレビュー中に内部サーバーエラーが発生しました

Hello,

I’m on Discourse 3.6.0.beta1-dev and facing an issue when trying to preview the digest email from the admin panel:
/admin/email/preview-digest

Problem description

  • When I click to send the digest, I get an Internal Server Error.
  • The email is not sent, and the error message appears as shown in the screenshots.

Screenshots


Error details

Message

ArgumentError (comparison of String with ActiveSupport::TimeWithZone failed)
app/controllers/list_controller.rb:525:in `>'
app/controllers/list_controller.rb:525:in `best_periods_for'
app/controllers/list_controller.rb:512:in `best_period_with_topics_for'
app/controllers/list_controller.rb:504:in `best_period_for'
app/models/topic.rb:560:in `for_digest'
app/mailers/user_notifications.rb:246:in `digest'
app/controllers/admin/email_controller.rb:49:in `respond_to?'
app/controllers/admin/email_controller.rb:49:in `send_digest'
app/controllers/application_controller.rb:429:in `block in with_resolved_locale'
app/controllers/application_controller.rb:429:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/middleware/crawler_hooks.rb:11:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
lib/middleware/default_headers.rb:13:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:410:in `call'

Backtrace

app/controllers/list_controller.rb:525:in `>'
app/controllers/list_controller.rb:525:in `best_periods_for'
app/controllers/list_controller.rb:512:in `best_period_with_topics_for'
app/controllers/list_controller.rb:504:in `best_period_for'
app/models/topic.rb:560:in `for_digest'
app/mailers/user_notifications.rb:246:in `digest'
actionpack (8.0.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (8.0.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (8.0.2.1) lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack (8.0.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (8.0.2.1) lib/abstract_controller/base.rb:163:in `process'
actionmailer (8.0.2.1) lib/action_mailer/rescuable.rb:29:in `block in process'
actionmailer (8.0.2.1) lib/action_mailer/rescuable.rb:21:in `handle_exceptions'
actionmailer (8.0.2.1) lib/action_mailer/rescuable.rb:28:in `process'
actionview (8.0.2.1) lib/action_view/rendering.rb:40:in `process'
actionmailer (8.0.2.1) lib/action_mailer/base.rb:652:in `block in process'
activesupport (8.0.2.1) lib/active_support/notifications.rb:212:in `instrument'
actionmailer (8.0.2.1) lib/action_mailer/base.rb:651:in `process'
actionmailer (8.0.2.1) lib/action_mailer/message_delivery.rb:136:in `block in processed_mailer'
<internal:kernel>:90:in `tap'
actionmailer (8.0.2.1) lib/action_mailer/message_delivery.rb:135:in `processed_mailer'
actionmailer (8.0.2.1) lib/action_mailer/message_delivery.rb:32:in `__getobj__'
/usr/local/lib/ruby/3.3.0/delegate.rb:101:in `respond_to_missing?'
app/controllers/admin/email_controller.rb:49:in `respond_to?'
app/controllers/admin/email_controller.rb:49:in `send_digest'
actionpack (8.0.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (8.0.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (8.0.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (8.0.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (8.0.2.1) lib/active_support/callbacks.rb:120:in `block in run_callbacks'
app/controllers/application_controller.rb:429:in `block in with_resolved_locale'
i18n (1.14.7) lib/i18n.rb:353:in `with_locale'
app/controllers/application_controller.rb:429:in `with_resolved_locale'
activesupport (8.0.2.1) lib/active_support/callbacks.rb:129:in `block in run_callbacks'
activesupport (8.0.2.1) lib/active_support/callbacks.rb:140:in `run_callbacks'
actionpack (8.0.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (8.0.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (8.0.2.1) lib/action_controller/metal/instrumentation.rb:76:in `block in process_action'
activesupport (8.0.2.1) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (8.0.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (8.0.2.1) lib/active_support/notifications.rb:210:in `instrument'
actionpack (8.0.2.1) lib/action_controller/metal/instrumentation.rb:75:in `process_action'
actionpack (8.0.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (8.0.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (8.0.2.1) lib/abstract_controller/base.rb:163:in `process'
actionview (8.0.2.1) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (4.0.1) lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack (8.0.2.1) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (8.0.2.1) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (8.0.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (8.0.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (8.0.2.1) lib/action_dispatch/routing/mapper.rb:32:in `block in <class:Constraints>'
actionpack (8.0.2.1) lib/action_dispatch/routing/mapper.rb:62:in `serve'
actionpack (8.0.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (8.0.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (8.0.2.1) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (8.0.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (8.0.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (8.0.2.1) lib/action_dispatch/routing/route_set.rb:908:in `call'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/middleware/crawler_hooks.rb:11:in `call'
rack (2.2.17) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.17) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.17) lib/rack/head.rb:12:in `call'
actionpack (8.0.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
rack (2.2.17) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.17) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/cookies.rb:706:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (8.0.2.1) lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack (8.0.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in `call'
lib/middleware/default_headers.rb:13:in `call'
railties (8.0.2.1) lib/rails/rack/logger.rb:41:in `call_app'
railties (8.0.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/request_id.rb:34:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.17) lib/rack/method_override.rb:24:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/executor.rb:16:in `call'
rack (2.2.17) lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler (4.0.1) lib/mini_profiler.rb:191:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.4.1) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:410:in `call'
actionpack (8.0.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties (8.0.2.1) lib/rails/engine.rb:535:in `call'
railties (8.0.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (8.0.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.17) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.17) lib/rack/urlmap.rb:58:in `each'
rack (2.2.17) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

Warning details

Message

Failed to handle exception in exception app middleware : ArgumentError : comparison of String with ActiveSupport::TimeWithZone failed

Backtrace

/var/www/discourse/app/controllers/list_controller.rb:525:in `>'
/var/www/discourse/app/controllers/list_controller.rb:525:in `best_periods_for'
/var/www/discourse/app/controllers/list_controller.rb:512:in `best_period_with_topics_for'
/var/www/discourse/app/controllers/list_controller.rb:504:in `best_period_for'
/var/www/discourse/app/models/topic.rb:560:in `for_digest'
/var/www/discourse/app/mailers/user_notifications.rb:246:in `digest'
actionpack-8.0.2.1/lib/abstract_controller/base.rb:226:in `process_action'
actionpack-8.0.2.1/lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport-8.0.2.1/lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack-8.0.2.1/lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack-8.0.2.1/lib/abstract_controller/base.rb:163:in `process'
actionmailer-8.0.2.1/lib/action_mailer/rescuable.rb:29:in `block in process'
actionmailer-8.0.2.1/lib/action_mailer/rescuable.rb:21:in `handle_exceptions'
actionmailer-8.0.2.1/lib/action_mailer/rescuable.rb:28:in `process'
actionview-8.0.2.1/lib/action_view/rendering.rb:40:in `process'
actionmailer-8.0.2.1/lib/action_mailer/base.rb:652:in `block in process'
activesupport-8.0.2.1/lib/active_support/notifications.rb:212:in `instrument'
actionmailer-8.0.2.1/lib/action_mailer/base.rb:651:in `process'
actionmailer-8.0.2.1/lib/action_mailer/message_delivery.rb:136:in `block in processed_mailer'
<internal:kernel>:90:in `tap'
actionmailer-8.0.2.1/lib/action_mailer/message_delivery.rb:135:in `processed_mailer'
actionmailer-8.0.2.1/lib/action_mailer/message_delivery.rb:32:in `__getobj__'
/usr/local/lib/ruby/3.3.0/delegate.rb:101:in `respond_to_missing?'
/var/www/discourse/app/controllers/admin/email_controller.rb:49:in `respond_to?'
/var/www/discourse/app/controllers/admin/email_controller.rb:49:in `send_digest'
actionpack-8.0.2.1/lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack-8.0.2.1/lib/abstract_controller/base.rb:226:in `process_action'
actionpack-8.0.2.1/lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack-8.0.2.1/lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport-8.0.2.1/lib/active_support/callbacks.rb:120:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:429:in `block in with_resolved_locale'
i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:429:in `with_resolved_locale'
activesupport-8.0.2.1/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
activesupport-8.0.2.1/lib/active_support/callbacks.rb:140:in `run_callbacks'
actionpack-8.0.2.1/lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack-8.0.2.1/lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack-8.0.2.1/lib/action_controller/metal/instrumentation.rb:76:in `block in process_action'
activesupport-8.0.2.1/lib/active_support/notifications.rb:210:in `block in instrument'
activesupport-8.0.2.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport-8.0.2.1/lib/active_support/notifications.rb:210:in `instrument'
actionpack-8.0.2.1/lib/action_controller/metal/instrumentation.rb:75:in `process_action'
actionpack-8.0.2.1/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-8.0.2.1/lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack-8.0.2.1/lib/abstract_controller/base.rb:163:in `process'
actionview-8.0.2.1/lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack-8.0.2.1/lib/action_controller/metal.rb:252:in `dispatch'
actionpack-8.0.2.1/lib/action_controller/metal.rb:335:in `dispatch'
actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:32:in `block in <class:Constraints>'
actionpack-8.0.2.1/lib/action_dispatch/routing/mapper.rb:62:in `serve'
actionpack-8.0.2.1/lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack-8.0.2.1/lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack-8.0.2.1/lib/action_dispatch/journey/router.rb:126:in `each'
actionpack-8.0.2.1/lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack-8.0.2.1/lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack-8.0.2.1/lib/action_dispatch/routing/route_set.rb:908:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
/var/www/discourse/lib/middleware/crawler_hooks.rb:11:in `call'
rack-2.2.17/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.17/lib/rack/conditional_get.rb:40:in `call'
rack-2.2.17/lib/rack/head.rb:12:in `call'
actionpack-8.0.2.1/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:415:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in `call'
rack-2.2.17/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.17/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/cookies.rb:706:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport-8.0.2.1/lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack-8.0.2.1/lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster-2.20.1/lib/logster/middleware/reporter.rb:40:in `call'
/var/www/discourse/lib/middleware/default_headers.rb:13:in `call'
railties-8.0.2.1/lib/rails/rack/logger.rb:41:in `call_app'
railties-8.0.2.1/lib/rails/rack/logger.rb:29:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/request_id.rb:34:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.17/lib/rack/method_override.rb:24:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/executor.rb:16:in `call'
rack-2.2.17/lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler-4.0.1/lib/mini_profiler.rb:191:in `call'
/var/www/discourse/lib/middleware/processing_request.rb:12:in `call'
message_bus-4.4.1/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:410:in `call'
actionpack-8.0.2.1/lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties-8.0.2.1/lib/rails/engine.rb:535:in `call'
railties-8.0.2.1/lib/rails/railtie.rb:226:in `public_send'
railties-8.0.2.1/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.17/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.17/lib/rack/urlmap.rb:58:in `each'
rack-2.2.17/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'
「いいね!」 1

2件の投稿が新しいトピックに分割されました:wysiwygコンポーザーでメールテンプレートを表示するとエラーが発生する

ええ、わかりました。最初(内部サーバーエラー)の問題について、そちら側で試していただけますか?

https://xxx.xxx/admin/email/preview-digest

それは私にとってはうまくいきました。「最終ログインユーザー」のフィールドには何を入力しましたか?

デフォルトです:23-08-25

そちらの画面のスクリーンショットを共有していただけますか?

「いいね!」 1

インターフェース言語をアラビア語に切り替えた後、バグを再現することができました。アクティビティの概要のプレビューは、ドイツ語または英語(ASCII数字を使用)では正しく機能しますが、アラビア数字では失敗します。

再現手順:

  1. インターフェース言語をアラビア語に変更します。
  2. /admin/email/preview-digest に移動します。
  3. 日付ピッカーで日付を選択して更新します。
    • 期待される結果:インターフェースが英語の場合と同じように概要が表示されます。
    • 実際の結果:概要が表示されず、インターフェースで無限にスピンし、ブラウザコンソールにエラー500が表示され、/logs にエントリが記録されます。
  4. ページをリロードしてスピナーを停止します。
  5. メールを入力して「送信」をクリックします。
    • 期待される結果:インターフェースが英語の場合と同じように概要が送信されます。
    • 実際の結果:内部サーバーエラーのポップアップが表示され、メールは送信されず、ブラウザコンソールにエラー500が表示され、/logs にエントリが記録されます。
「いいね!」 1

はい、この問題はアラビア語でのみ発生しました。英語に切り替えてみましたが、正常に動作しました。

「いいね!」 1

修正する計画はありますか?フォーラムのニュースレターをすべてのメンバーにメールで送信する方法はありますか?ダイジェストメールのテンプレートのようなものですか?

これを#pr-welcomeとして、アラビア数字から日付への変換を行う必要があります。そうしないと、他のコードが壊れてしまいます。

「いいね!」 2

@xkhalid Discourse の他の日付ピッカーは正常に動作しますか?
例えば

  • コンポーザーの「その他」メニューにある「時刻を挿入」は機能しますか?

  • 管理ダッシュボードで時間範囲を選択することはできますか?

  • スタッフアクションログをフィルタリングすることはできますか?

もし機能するのであれば、アクティビティ概要の日付ピッカーを修正するためのモデルとして使用できる可能性があります。

いいえ


いいえ


いいえ

「いいね!」 1

それなら、アクティビティの概要の時間範囲を個別に修正することが理にかなっているかどうかはわかりません。これは、私ができたかもしれないことです。
私にとっては、これはすべての日付入力に一般的な解決策を必要とする根本的な問題のように見えます。

「いいね!」 1

これを見ていますが、2番目のインスタンス(リッチエディタ)については動作するコードがあると思います。最初のインスタンスについては、ローカル日付に関連するパラメータを変換するミドルウェアを作成できると思います。

変更は次のブランチリポジトリにコミットしています: GitHub - ghassanmas/discourse at local-date-fix-ar

「いいね!」 1

貢献してくれた@ghassanさん、ありがとうございます。

自分のフォーラムでこれを試してみようと思いますが、まずはステージング環境でテストする方が良いでしょう。

まだ準備ができていません。ペルシャ数字/ウルドゥー数字の別のエッジケースを見つけました。

また、数字/日付はASCII形式で保存および転送され、ビューレイヤーでのみローカライズされるという、より簡単なソリューションがあると思います。

これは、momentjsまたはmoment-timezoneが常に正しいロケールを認識していることを前提として機能するはずです。

アップロードされた画像について。日付は `٢٥-٠٨-٢٠٢٤` に回転させることに同意しますか?

アラビア語のユーザーにとっては、数字を逆にした場合、非常に混乱するでしょう。なぜなら、アラビア語では自然に日 → 月 → 年の順で左から右に記述するからです。

アラビア語で日付が表示される方法は、スクリーンショットに示されているように、こちら側では正しいです。

とはいえ、あなたのアイデアは非常に気に入っています。最適な解決策は、まさに数字を英語(ASCII)で保存し、言語に応じて表示レイヤーでのみローカライズすることでしょう。それは素晴らしいアプローチです。

「いいね!」 1

興味深いですね。私はアラビア語のネイティブスピーカーですが、逆の順序を考えるでしょう。

@xkhalid ローカル日付修正の改善アプローチのパッチはこちらです: GitHub - ghassanmas/discourse at local-date-fix-improvment

こちらで2つのケースが解決されたか確認していただけますか?

「いいね!」 1

@ghassan 残念ながら、別のテスト環境がなく、作業できるのは本番サーバーのみです :frowning:

ローカル開発環境でテストしました。

PRはこちらです: fix: when date locale isnt ascii by ghassanmas · Pull Request #34914 · discourse/discourse · GitHub

まだいくつかのテストを修正する必要があります(改善を追加してリッチエディタのローカル日付レンダリングも行ったため)、おそらくさらにテストを追加する必要があるでしょう。

テストの修正/追加に専念する前に、方向性について:+1: をいただけると幸いです。

「いいね!」 1