히브리어 클라이언트 로케일에서 잘못된 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)

이미 시도해 보셨겠지만, 확실하게 확인하기 위해: 안전 모드도 실패할까요?

지금까지 몰랐는데, 감사합니다. 하지만 문제는 여전히 남아 있습니다.
말씀드린 것처럼, 로그아웃(기술적으로는 쿠키 삭제)하면 모든 것이 정상적으로 보입니다. 로그인할 때 실패합니다.
솔직히 Rails에 대한 경험이 없어서 더 자세한 로그를 출력하는 방법을 모르겠습니다.

글쎄, 내게 레일즈는… 글쎄, 단순히 어렵다는 것 이상이야.

하지만 500은 서버 오류야. 플러그인에서 비롯된 경우가 많지만, 설정 오류일 수도 있어. 문제가 사용자 측에서 발생한다면 안전 모드가 무엇이 문제인지 힌트를 줄 수 있어. 하지만 서버 측에서 기능을 변경하는 부분이 깨졌다면 안전 모드는 별 도움이 안 돼.

물론 모든 플러그인을 비활성화하고 다시 빌드해서 상황이 해결되는지 확인한 다음, 하나씩 찾아보는 방법도 있어. 또는 적어도 디스코어가 만든 플러그인이 아닌 것들은 전부 비활성화하는 방법도 있지만, 공식 플러그인도 여기서는 사용되지 않으므로 그것도 완전히 확신할 수는 없어.

하지만 꽤 시간이 걸리지. 실제로 아는 사람이 말하기까지 기다리는 것이 더 현명한 선택일 수도 있어.

/logs를 확인하면 추가적인 세부 정보를 얻을 수 있거나, 페이지를 로드할 때 브라우저 콘솔을 살펴보는 것도 좋습니다.

1개의 좋아요

브라우저 콘솔(Firefox)에서 특이한 점은 없으며, 요청 시 생성되는 유일한 로그 줄은 위 원본 주제에 게시되어 있습니다.

다음 단계는 무엇인가요? ./launcher bootstrap를 실행하고 백업에서 복원해야 하나요?

제임미는 디스커스의 로그를 말하는 것 같습니다. 관리자 계정으로 로그인할 수 있을까요?

1개의 좋아요

저는 _관리자_이고, 로그인하면 정보가 너무 부족해서 내부에 문의해 보았습니다…

네, YourSite/logs 페이지를 말씀하신 거예요. 그 오류에 대해 아무것도 기록되어 있지 않나요?

1개의 좋아요

아니, 정말… 로케일 번역이 부족하다는 것이 500 에러를 발생시키는 이유가 될 수 있나요?!

수정: 이것이 버그 리포트가 되었으므로, 문제의 원인이 언어 파일 자체에는 없는 것 같습니다 (*.en.yml 파일을 he.yml로 복사해도 해결되지 않았으므로). 이러한 문제가 발생했을 때 적어도 우아하게 실패하고 영어로 폴백(fallback)하도록 하는 것이 좋다고 생각합니다.

제가 읽은 내용으로는, 이 문제가 발생하기 직전의 마지막으로 정상 작동했던 커밋으로 git을 되돌리는 방법이 없는 것 같습니다. 만약 이 변경 사항이 테스트를 통과했다면, 새로운 테스트를 추가해야 할 것 같습니다. 이 커밋은 사이트가 ‘잘못된’ 로케일을 사용하는 경우 작동하지 않습니다. 사이트를 가장 빠르게 정상 가동하기 위한 최선의 방법은 무엇이며, 앞으로 이런 문제를 어떻게 방지할 수 있을까요?

정확히 어딘가에 로케일이 누락된 문제인지는 확실하지 않습니다. 스크린샷을 보면 MaxMind 설정도 잘못되어 있습니다.

제 추측이지만, 다른 곳에 문제가 있어 나머지 부분도 함께 깨진 것 같습니다. /.launcher rebuild app을 실행하고 이상한 결과가 나오는지 확인해 보시는 것이 좋습니다.

주요 로케일로 어떤 언어를 사용하고 계신가요?

히브리어입니다.

몇 번이나 다시 빌드해 봤는데, 아무 소식이 없습니다.

rails 콘솔에 접속해서 SiteSetting.default_locale='en'을 설정해 보겠습니다.

또는: User.find_by(username: 'my-username').update(locale: 'en')을 사용할 수 있습니다.

1개의 좋아요

사용자의 기본 로케일을 오버라이드하기 위해 실행해야 할 다른 작업이 있나요? 이 설정만으로는 크게 달라지지 않았습니다.

좋네요. 저한테는 잘 작동했습니다. 텍스트는 여전히 올바르게(오른쪽에서 왼쪽으로 정렬되어) 표시되고, UI만 영어로 표시됩니다. 다소 어색하지만 사용할 수는 있네요.

그러면 이 방법으로 모든 사용자를 순회한 다음, 히브리어 문제가 해결되면 다시 모든 사용자를 원래대로 되돌리면 되는 건가요?

그 작업을 하기 전에 로케일에서 오류를 찾아 수정하는 시간을 좀 갖는 것이 좋겠습니다.

먼저 사이트를 정상적으로 운영해야 합니다. Crowdin에서 번역이 깨진 경우, 제가 이를 수정할 방법이 없습니다.