텍스트 `dashboard.problem.sidekiq_check` 누락

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.

3개의 좋아요

다음으로 수정됨:

2개의 좋아요

수정 원리를 이해하는 데 도움을 주실 수 있나요? server.en.yml 파일에서 번역 키를 확인했고, override_key가 체크 이름과 일치하도록 이름이 변경된 것을 알 수 있습니다. 왜 둘 다 파일 이름과 일치하도록 변경해야 하는지 궁금합니다. sidekiq_check 대신 sidekiq를 사용해도 작동하지 않았을까요? 표시되는 경고는 override_key가 아니라 여전히 체크 이름에 의해 결정되는 것 같아, dashboard.problem.queue_size라는 override가 실제로 작동하는지, 아니면 dashboard.problem.sidekiq처럼 절대 표시되지 않는 텍스트인지 궁금합니다.

2개의 좋아요

네, 별도의 파일에서 문제 확인 식별자를 참조합니다:

따라서 위의 PR은 번역 문자열이 문제 확인 파일 이름과 일치하도록 보장합니다. 이 파일 이름은 sidekiq_check와 같은 식별자로 변환됩니다. 번역 문자열에 sidekiq를 사용했을 때는 작동하지 않았으며, 이는 식별자와 일치하지 않았기 때문입니다.

1개의 좋아요

죄송하지만, 여전히 제대로 이해가 되지 않습니다.

queue_size도 파일명/식별자와 일치하지 않는데, sidekiq도 그랬듯이요. 그런데 왜 그 경우에는 문제가 되지 않는지 여전히 이해할 수 없습니다.

이는 다른 코드 경로가 오버라이드 키 대신 식별자를 직접 사용하기 때문인가요? 즉, 파일명과 일치하는 세 번째 번역 키를 추가하는 대신 sidekiq가 식별자 기반 키를 사용하도록 변경한 것인가요? 오버라이드 케이스와 식별자 케이스를 모두 지원하는 일석이조 솔루션인 셈이죠?

만약 그렇다면, 왜 dashboard.problem.sidekiq_check를 오버라이드 키로 전달해야 하는지 이해가 되지 않습니다. 번역 키가 파일명과 일치하는 다른 문제 체크들은 이를 필요로 하지 않는데, 왜 여기서는 오버라이드가 필요한가요?

1개의 좋아요

네, 맞습니다.

필요하지 않습니다. sidekiq_check.rb의 8번째 줄에서 return problem을 사용했다면 이 방식으로도 충분히 잘 작동했을 것입니다. 두 방식은 동등합니다. (당시 그 PR에서 변경 사항을 최소화하기 위해 오버라이드 방식을 유지했습니다.)

1개의 좋아요

개발 환경에서 dashboard.problem.queue_size 오류 메시지를 트리거하기 위해 쉽게 변경할 수 있는 설정이 있을까요?

아래와 같이 변경하면 해당 오류가 트리거될 것 같았어요:

  def massive_queue?
    Jobs.queued >= 100_000
  end

>= 0으로 변경했는데, 그 결과 dashboard.problem.sidekiq_check가 발생했습니다.

1개의 좋아요

시스템 스펙에서 재현하는 것이 더 쉽습니다. 그렇게 해보았는데 몇 가지 문제가 더 드러났는데, 이 PR이 그 문제들을 수정해야 합니다:

1개의 좋아요

디스코urs 인터페이스를 번역할 때, 텍스트를 컨텍스트 안에서 확인하는 것이 도움이 되는 경우가 있습니다. 그래서 저는 때때로 이러한 경고 메시지를 트리거해 보려 하고, 더 쉽게 그 방법을 배울 수 있으면 좋겠습니다. 시스템 스펙으로 이것이 가능한가요? 아니면 말씀하신 '더 쉽다’는 코드가 의도대로 작동하는지 확인하는 맥락과만 관련이 있는 건가요?

네, 시스템 스펙을 사용하면 컨텍스트 내에서 번역을 확인할 수 있습니다.

Discourse 개발 환경을 가지고 있다면, 다음과 같이 할 수 있습니다:

  1. 브라우저에서 확인하고 싶은 시스템 스펙에 pause_test 문을 추가합니다.
  2. 해당 시스템 스펙을 헤드풀(headful) 모드로 실행합니다. 즉, 전체 브라우저가 표시되는 모드로 실행하는 것입니다(기본적으로 스펙은 헤드리스(headless) 모드로 실행됩니다).

예를 들어, 위의 스펙의 경우 admin_notices_spec.rb의 47번째 줄에 pause_test를 추가하고 다음과 같이 스펙을 실행했습니다:

PLAYWRIGHT_HEADLESS=0 bin/rspec spec/system/admin_notices_spec.rb:47

이렇게 하면 브라우저가 실행되고 해당 특정 화면에서 일시정지됩니다:

1개의 좋아요