QUERY_RESULT_MAX_LIMIT을 오버라이드하는 플러그인 만들기

나는 무모하게 DataExplorer 모듈에서 설정된 제한을 오버라이드하는 플러그인을 만들어 보려 했습니다(몇 년 전 플러그인 튜토리얼을 따라 해본 적은 있지만, 직접 만들어 본 적은 전혀 없습니다). 하지만 제대로 동작하지 않습니다.

제 접근 방식이 올바른 방향인가요, 아니면 완전히 잘못된 방법인가요?

참고: 커스텀 제한이 적용되는지 테스트하기 쉽게 하려고 QUERY_RESULT_DEFAULT_LIMIT을 1로 설정해 두었습니다.

여기서는 플러그인을 사용하도록 권장하지 않습니다.

대신 환경 변수로 백업되는 GlobalSetting을 추가하는 PR을 제출해 주세요.

사실 지난 2년 동안 아무도 이를 우선순위로 두지 않은 것 같지만, 오늘 제가 이 기능이 필요해서 컨테이너 안에서 파일을 수동으로 편집하여 해결했습니다.

app.yml에 아래와 같은 내용을 추가하는 것이 임시 해결책이 될 수 있습니다:

  after_bundle_exec:
   - replace:
        filename: "/var/www/discourse/plugins/discourse-data-explorer/plugin.rb"
        from: /QUERY_RESULT_MAX_LIMIT = 10_000/
        to: QUERY_RESULT_MAX_LIMIT = 100_000

하지만 PR(풀 리퀘스트)는 plugin.rb에 아래 코드를 추가하는 형태로 되어야 할 것 같습니다:

GlobalSetting.add_default(:query_result_max_limit, 10000)

그리고 위 모듈을 다음과 같이 변경하는 것입니다:

  QUERY_RESULT_MAX_LIMIT = GlobalSetting.query_result_max_limit || 10_000

이것만으로 충분한가요?

거의 됐네요…

상수를 더 이상 사용하지 말고, 대신 GlobalSetting.query_result_max_limit을 모든 곳에 사용하는 걸 추천합니다. 이미 기본값을 설정해 두고 있는데, 왜 두 번이나 설정하나요?

하지만 사용자가 GlobalSetting을 설정하지 않는 경우에도 기본값이 필요하지 않나요?

plugin.rb에서 설정합니다.

오오오. add_default가 실제로 기본값을 추가하는구나. :person_shrugging:

실수했네.

기본 GlobalSetting을 추가하고, 기존 상수에 대한 모든 참조를 GlobalSetting으로 교체하면 되는군요.

알겠습니다.

어떻게 할 수 있는지 알아볼게요.