ArgumentError: Неверный часовой пояс: US/Pacific-New вызывает ошибку 500

У меня стандартная установка, которую я только что обновил, и она не работает из-за проблемы с часовым поясом. Я думаю, что это может быть связано только с одним пользователем, но пока не уверен.

Действительно, проблема была только у одного пользователя. Когда я зашел в его профиль, оказалось, что часовой пояс не установлен. После того как я указал часовой пояс, проблема исчезла.

Started GET "/t/37040.json?track_visit=true&forceLoad=true" for 204.98.75.5 at 2023-03-23 21:36:37 +0000
Processing by TopicsController#show as JSON
  Parameters: {"track_visit"=>"true", "forceLoad"=>"true", "id"=>"37040"}
Completed 500 Internal Server Error in 48ms (ActiveRecord: 0.0ms | Allocations: 8345)
ArgumentError (Invalid Timezone: US/Pacific-New)
(eval):82:in `_fast_attributes'
app/serializers/post_stream_serializer_mixin.rb:54:in `block in posts'
app/serializers/post_stream_serializer_mixin.rb:47:in `map'
app/serializers/post_stream_serializer_mixin.rb:47:in `posts'
app/serializers/post_stream_serializer_mixin.rb:18:in `post_stream'
(eval):3:in `_fast_attributes'
app/controllers/application_controller.rb:545:in `render_json_dump'
app/controllers/topics_controller.rb:1242:in `block (2 levels) in perform_show_response'
app/controllers/topics_controller.rb:1232:in `perform_show_response'
app/controllers/topics_controller.rb:187:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369: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:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Failed to handle exception in exception app middleware : ArgumentError : Invalid Timezone: US/Pacific-New
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Started GET "/latest.json" for 172.220.127.141 at 2023-03-23 21:37:00 +0000
Processing by ListController#latest as JSON

EDIT: возможно, у него часовой пояс был установлен на это некорректное значение? Я проверил другого пользователя с пустым (nil) значением часового пояса, и ошибки не возникло.

3 лайка

С какой версии вы обновлялись?

Возможно, это связано (и уже устарело): FIX: removes us_pacific-new from the list of available timezones by jjaffeux · Pull Request #10514 · discourse/discourse · GitHub

5 лайков

Ух ты, хорошее замечание. Мне нужно научиться лучше искать строки в старых коммитах. Вы делаете это через интерфейс GitHub? Где именно?

Это было из недавней версии, не старше месяца. Не имеет смысла, что это проблема сейчас, если только какая-то более новая библиотека не применяет что-то иначе.

Так что, возможно, это случайность, а может быть, тот коммит должен был удалить настройки пользователя с этой теперь невалидной часовой зоной.

1 лайк
  1. Перейдите в репозиторий, который хотите искать.
  2. Введите поисковый запрос в левом верхнем углу.

  1. Нажмите и выберите «в этом репозитории».

2 лайка

Не понимаю, как мне понадобилось 6 лет, чтобы это понять!

3 лайка

Что ж, похоже, я всё ещё не разобрался.

Но подождите! Вот секрет, который я упускал все эти годы:

и если нажать на «issues»… наконец-то!

Большое спасибо.

1 лайк

Что ж, мое лучшее предположение состоит в том, что существовал временной промежуток, когда можно было выбрать US/Pacific-New в качестве часового пояса, и этот пользователь так и сделал. Теперь какая-то библиотека не работает для пользователей с таким часовым поясом.

UserOption.where(“timezone like ‘%Pacific-New%’”)

не находит других пользователей с таким часовым поясом, так что, полагаю, на этом сайте это больше не повторится.

1 лайк