테마 컴포넌트 업데이트 시 항상 오래된 버전이 설치됩니다 (rake 또는 수동 설치) (해결됨)

이것과 매우 유사한 문제가 다시 발생한 것으로 보입니다:

Discourse 3.5.2를 사용 중인데, 특정 컴포넌트(소스에서)를 설치하려고 하면 항상 오래된 버전이 설치됩니다. 내보내기(export)를 통해 확인해 보니 오래된 JavaScript가 포함되어 있습니다. 또한 브라우저 개발자 도구에서 파일을 검색하면 항상 해당 파일의 오래된 버전이 표시됩니다. about.json에서 이름을 변경한 후 빌드를 실행해도 여전히 오래된 이름이 표시됩니다.

Components 페이지에서 GitHub를 통해 수동으로 설치하든, app.yml에서 설치하든 동일한 문제가 발생합니다.

Install a Theme programatically 에 따라, 제 app.yml의 끝부분은 다음과 같습니다:

## 빌드 후 실행할 커스텀 명령어
run:
  - exec: echo "Beginning of custom commands"
  ## 첫 번째 가입 시 'From' 이메일 주소를 설정하려면 주석 해제 후 변경하세요:
  ## 첫 가입 이메일을 받은 후 해당 줄을 다시 주석 처리하세요. 한 번만 실행하면 됩니다.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"

  - file:
      path: /tmp/mythemes.yml
      contents: |
        discourse-new-topic-button:
          url: https://github.com/toad/discourse-new-topic-button-theme-component.git
          add_to_all_themes: true
  
  # 이전 저장소 - 어떤 기이한 캐싱 문제 때문에 커밋마다 새 저장소를 만들어야 할 것 같습니다?

  #url: https://github.com/toad/discourse-new-topic-button.git
  #url: https://github.com/toad/discourse-new-topic-button-theme-component.git
  #url: https://github.com/toad/discourse-new-topic-button-mod.git

  - exec:
      cd: $home
      cmd: su discourse -c 'bundle exec rake themes:install < /tmp/mythemes.yml'

  - exec: echo "End of custom commands"

그리고 출력 결과는 다음과 같습니다:

I, [2025-11-12T01:43:24.323446 #1]  INFO -- : > echo "Beginning of custom commands"
I, [2025-11-12T01:43:24.325106 #1]  INFO -- : Beginning of custom commands

I, [2025-11-12T01:43:24.327203 #1]  INFO -- : File > /tmp/mythemes.yml  chmod:   chown: 
I, [2025-11-12T01:43:24.327361 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:install < /tmp/mythemes.yml'
I, [2025-11-12T01:43:32.778093 #1]  INFO -- : discourse-new-topic-button: installed from https://github.com/toad/discourse-new-topic-button.git

Results:
 Installed: 1
 Updated:   0
 Errors:    0
 Skipped:   0

I, [2025-11-12T01:43:32.778262 #1]  INFO -- : > echo "End of custom commands"
I, [2025-11-12T01:43:32.779694 #1]  INFO -- : End of custom commands

rebuild 실행 전에 컴포넌트를 삭제하지 않으면 Installed 대신 Updated가 표시됩니다. 어쨌든 결국 컴포넌트의 오래된 버전이 남게 됩니다.

페이지를 벗어나거나, Shift+새로고침 등을 해봐도 아무 차이가 없습니다. 다른 저장소로 이동시켜도 차이가 없으므로 URL 기반 캐싱 문제는 아닙니다(해당 저장소 중 두 개는 동일합니다).

컨테이너 내부에서 rake를 사용하여 직접 빌드해 보기도 했습니다.

이 문제를 디버깅하는 방법에 대해 아이디어가 있을까요? 빌드 로그를 볼 수 있으면 유용할 텐데, rake에 --verbose 옵션을 추가해도 더 많은 정보를 제공하지 않습니다.

제 환경 설정은 약간 비정상적입니다(이것은 스테이징 서버이지만, 프로덕션에서는 루트리스 Docker를 사용하고 있습니다).

도움 좀! :neutral_face:

커밋 990dec4f3e8411215122c74b2684782244eeffa2 이전의 어떤 것을 항상 빌드하는 것 같습니다. 이 커밋은 New Topic Button을 Glimmer 지원으로 이동시켰으며, 3.6에서는 필수적입니다. 따라서 3.6으로 업그레이드하면 이 문제가 발생하게 될 것입니다. New Topic Button 컴포넌트의 포크를 수정하려고 노력하고 있지만, 업스트림 버전도 깨질 것 같습니다.

다시 한번 묻지만, 이 문제를 디버깅하기 위해 무엇을 할 수 있을까요? :neutral_face:

호환성 파일은 3.6 이전 버전의 Discourse 설치에 특정 버전을 설치합니다.

오! 감사합니다. :grinning_face:

흥미로운 점은, Glimmer 관련 부분은 3.5와 호환되어야 한다는 것입니다. 따라서 Glimmer로의 업스트림 포팅이 아직 미성숙할 수 있습니다. 직접 시도해 보고, 3.6에서도 확인해 볼 예정입니다. 감사합니다.

업데이트: 오판이었습니다. 3.6에 특화된 추가 변경 사항이 있었지만, 3.5 버전은 위젯 제거에 대한 경고 메시지를 수정합니다. 따라서 만족스럽습니다.

P.S. 버튼을 이동한 것(제 변경 사항)이 업스트림 버그(카테고리 자동 감지 안 됨)를 수정합니다. 여기 확인하세요: