I saw this on a forum today
And I think Discourse is right: There is no dashboard.problem.sidekiq_check. There are
which are referenced here:
But it seems Discourse refers to the name of that problem check instead of using the override_key.
I saw this on a forum today
And I think Discourse is right: There is no dashboard.problem.sidekiq_check. There are
which are referenced here:
But it seems Discourse refers to the name of that problem check instead of using the override_key.
다음으로 수정됨:
수정 원리를 이해하는 데 도움을 주실 수 있나요? server.en.yml 파일에서 번역 키를 확인했고, override_key가 체크 이름과 일치하도록 이름이 변경된 것을 알 수 있습니다. 왜 둘 다 파일 이름과 일치하도록 변경해야 하는지 궁금합니다. sidekiq_check 대신 sidekiq를 사용해도 작동하지 않았을까요? 표시되는 경고는 override_key가 아니라 여전히 체크 이름에 의해 결정되는 것 같아, dashboard.problem.queue_size라는 override가 실제로 작동하는지, 아니면 dashboard.problem.sidekiq처럼 절대 표시되지 않는 텍스트인지 궁금합니다.
네, 별도의 파일에서 문제 확인 식별자를 참조합니다:
따라서 위의 PR은 번역 문자열이 문제 확인 파일 이름과 일치하도록 보장합니다. 이 파일 이름은 sidekiq_check와 같은 식별자로 변환됩니다. 번역 문자열에 sidekiq를 사용했을 때는 작동하지 않았으며, 이는 식별자와 일치하지 않았기 때문입니다.
죄송하지만, 여전히 제대로 이해가 되지 않습니다.
queue_size도 파일명/식별자와 일치하지 않는데, sidekiq도 그랬듯이요. 그런데 왜 그 경우에는 문제가 되지 않는지 여전히 이해할 수 없습니다.
이는 다른 코드 경로가 오버라이드 키 대신 식별자를 직접 사용하기 때문인가요? 즉, 파일명과 일치하는 세 번째 번역 키를 추가하는 대신 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가 발생했습니다.
시스템 스펙에서 재현하는 것이 더 쉽습니다. 그렇게 해보았는데 몇 가지 문제가 더 드러났는데, 이 PR이 그 문제들을 수정해야 합니다:
디스코urs 인터페이스를 번역할 때, 텍스트를 컨텍스트 안에서 확인하는 것이 도움이 되는 경우가 있습니다. 그래서 저는 때때로 이러한 경고 메시지를 트리거해 보려 하고, 더 쉽게 그 방법을 배울 수 있으면 좋겠습니다. 시스템 스펙으로 이것이 가능한가요? 아니면 말씀하신 '더 쉽다’는 코드가 의도대로 작동하는지 확인하는 맥락과만 관련이 있는 건가요?
네, 시스템 스펙을 사용하면 컨텍스트 내에서 번역을 확인할 수 있습니다.
Discourse 개발 환경을 가지고 있다면, 다음과 같이 할 수 있습니다:
pause_test 문을 추가합니다.예를 들어, 위의 스펙의 경우 admin_notices_spec.rb의 47번째 줄에 pause_test를 추가하고 다음과 같이 스펙을 실행했습니다:
PLAYWRIGHT_HEADLESS=0 bin/rspec spec/system/admin_notices_spec.rb:47
이렇게 하면 브라우저가 실행되고 해당 특정 화면에서 일시정지됩니다: