커스텀 이모지가 추가된 사이트의 경우, 해당 수정 사항이 병합되면서 이제 채팅에서 이모지가 깨지는 문제가 발생합니다.
표준 게시물 이미지(이것은 rake posts:rebake로 수정 가능)와 달리, 채팅용 커스텀 이모지는 /site.json을 통해 프론트엔드에 동적으로 전달됩니다.
데이터베이스에 프로토콜이 누락된 S3 URL(예: //bucket.endpoint...)이 포함되어 있거나, app.yml 환경 변수와 완벽하게 일치하지 않는 가상 호스팅 스타일 도메인을 사용하는 경우, Discourse의 내부 CDN replacer가 조용히 실패합니다. 그러면 브라우저로 원본 버킷 URL이 그대로 전달되어 채팅의 커스텀 이모지가 깨집니다.
수정 방법:
이를 영구적으로 수정하려면 데이터베이스에서 원본 버킷 URL을 CDN URL로 강제 재매핑한 뒤, /site.json이 재생성되도록 사이트 캐시를 비워야 합니다.
1. 컨테이너 진입:
서버에 SSH로 접속하여 Discourse 컨테이너(보통은 app, 두 컨테이너 구성인 경우 web_only)에 진입합니다.
cd /var/discourse
./launcher enter app
2. URL 재매핑:
내장된 Discourse remap 도구를 실행합니다. 마이그레이션 스크립트가 남겨놓는 https:// 변형과 스키마 없는 // 변형 모두를 포착하기 위해 두 번 실행해야 합니다.
플레이스홀더를 실제 원본 버킷 URL과 실제 CDN URL로 교체하세요:
# 표준 https:// URL 수정
discourse remap "https://<your-bucket>.<your-endpoint>.com" "https://cdn.your-domain.com"
# 스키마 없는 // URL 수정 (보통 커스텀 이모지가 깨지는 원인)
discourse remap "//<your-bucket>.<your-endpoint>.com" "https://cdn.your-domain.com"
3. 캐시 비우기
/site.json은 캐싱이 심하게 이루어지므로, 포럼이 새로운 URL을 제공하도록 rails 캐시를 비워야 합니다:
rails 콘솔을 엽니다:
rails c
다음 명령을 실행합니다:
Rails.cache.clear
Site.clear_cache
exit
4. 새로고침
브라우저를 하드 새로고침하고(아직 테마 컴포넌트 우회 조치를 사용하고 있다면 이를 비활성화합니다). 이제 채팅의 커스텀 이모지가 수정되어 CDN을 통해 정상적으로 로드되어야 합니다.